かなり長い間、本番環境で次のコードを使用してきました。
@Override
@Transactional(readOnly = true)
@Cacheable("WIDGET_SERVICE_CACHE")
public List<WidgetTO> findAllWidgets() {
return ...;
}
@Override
@Cacheable("WIDGET_SERVICE_CACHE")
@Transactional(readOnly = true)
public List<WidgetHostTO> findAllWidgetHosts() {
return ...;
}
ご覧のとおり、これらは同じキャッシュを使用する 2 つの異なるゼロ引数メソッドです。ここで、 Spring キャッシュに関するいくつかのドキュメントを読んだ後、要素をキャッシュに入れるときにメソッドの名前が考慮されていないように見えます。
今のところ不明なのは、ドキュメントによれば動作しないはずですが、動作するということです。パラメータのみがキャッシュのキーに使用されているようには見えません。それが本当なら、他に何が考慮されますか。そうでない場合、なぜそれが機能し、noet が (ClassCast)Exceptions をスローしないのでしょうか?