我在项目中使用基于Spring Declarative Annotation的缓存。
的applicationContext.xml
<cache:annotation-driven />
目前,一切都使用基于Spring注释的缓存完美运行。
我们在开发和本地环境中使用基于ehCache
和ConcurrentHashMap
的下划线缓存机制。
现在项目中需要更新Spring缓存框架的行为以及某些特定的业务需求。
我想知道是否有人帮助我弄清楚如何更换
<cache:annotation-driven />
这个注释有任何spring类定义,我可以自定义行为吗?
答案 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只是静态创建的类,彼此之间紧密耦合。