声明式Spring缓存定制

时间:2012-09-25 19:08:15

标签: java spring caching spring-mvc ehcache

我在项目中使用基于Spring Declarative Annotation的缓存。

的applicationContext.xml

<cache:annotation-driven />

目前,一切都使用基于Spring注释的缓存完美运行。 我们在开发和本地环境中使用基于ehCacheConcurrentHashMap的下划线缓存机制。

现在项目中需要更新Spring缓存框架的行为以及某些特定的业务需求。

我想知道是否有人帮助我弄清楚如何更换

<cache:annotation-driven /> 

这个注释有任何spring类定义,我可以自定义行为吗?

2 个答案:

答案 0 :(得分:2)

查看org.springframework.cache.annotation.EnableCaching。 查看源代码中的注释。

它相当于&lt; cache:annotation-driven /&gt;但在春季java配置。

您将需要覆盖此类:org.springframework.cache.aspectj.AnnotationCacheAspect

负责连接建议。

答案 1 :(得分:0)

这个答案引导我朝着正确的方向前进。我发现关于spring的缓存支持的内部工作原理是它不是在cacheManager和KeyGenerator实现之外注入的依赖项。我想继承/扩展CacheAspectSupport并发现此类首先由CacheInterceptor扩展,但后来使用类ProxyCachingConfiguration中的新语句创建该类。为了能够替换一个类/方法,将需要替换一个听起来不太友好的类的完整列表(不可否认,我可能会遗漏一些东西)。

我对更换生产线所期待的是一套完整列出的春豆,它组成了构成缓存支持的所有AOP切入点,建议/方面等,但似乎这是alål只是静态创建的类,彼此之间紧密耦合。