我希望这不是重复,但我找不到与我的要求相关的问题/答案。
在应用程序中,需要将spring缓存注释(内部使用ehcache)应用于许多服务层的方法。
例如,ContentService类有以下两种方法。
@Caching(cacheable = { @Cacheable(condition = "#baseObj.isCacheEnabled()", value = "cacheName", key = "#baseObj.getCacheKey()") })
@Order(value = 2)
public ReturnObj getPageContent(BaseObject baseObj);
@Caching(cacheable = { @Cacheable(condition = "#baseObj.isCacheEnabled()", value = "cacheName", key = "#baseObj.getCacheKey()") })
@Order(value = 2)
public ReturnObj getModuleContent(BaseObject baseObj);
如您所见,以下注释在每个服务方法注释中都会重复和冗余。
@Caching(cacheable = { @Cacheable(condition = "#baseObj.isCacheEnabled()", value = "cacheName", key = "#baseObj.getCacheKey()") })
@Order(value = 2)
问题1 有没有办法可以扩展缓存注释并在那里移动冗余的东西,而不是用相同的代码乱丢这些类?
例如,
@CustomCaching
@Order(value = 2)
public ReturnObj getPageContent(BaseObject baseObj);
@CustomCaching
@Order(value = 2)
public ReturnObj getModuleContent(BaseObject baseObj);
其中CustomCaching接口可以扩展Spring的缓存接口,并在一个地方应用通常需要的注释。
问题2
有没有办法可以在一个公共位置指定@Order(value=2)
并说,将此注释应用于类中的所有方法?