我们一直在生产中使用以下代码已经有一段时间了:
@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 ...;
}
正如您所看到的,这些是使用相同缓存的两种不同的零arg方法。现在,在阅读Spring cache上的一些文档后,似乎在将元素放入缓存时不考虑方法的名称。
现在我们不清楚的是,尽管根据文档它不应该有效,但确实如此。似乎只有参数用于缓存的密钥。 如果这是真的,那么还有什么考虑因素。如果没有,为什么它对我们起作用并且发出noet throw(ClassCast)例外?