我们在生产环境中使用以下代码已经有一段时间了:
@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 ...;
}
如您所见,这是使用相同缓存的两种不同的零参数方法。现在,在阅读了一些关于Spring 缓存的文档之后,似乎在将元素放入缓存时没有考虑方法的名称。
我们现在不清楚的是,尽管根据文档它不应该工作,但它确实有效。似乎不是只有参数用于缓存的键。如果这是真的,还有什么要考虑的。如果不是,它为什么对我们有用并且不会抛出(ClassCast)异常?