声明性 Spring 缓存自定义



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

应用程序上下文.xml

<cache:annotation-driven />

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

现在项目中有一个要求,我需要用一些特定的业务需求更新 Spring 缓存框架的行为。

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

<cache:annotation-driven /> 

这个注释与任何弹簧类定义,我可以自定义行为?

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

它相当于<cache:annotation-driven>,但在 Spring java 配置中。

你可能需要覆盖这个类:org.springframework.cache.aspectj.AnnotationCacheAspect

它负责接线建议。

这个答案引导我走向正确的方向。我发现的关于 spring 缓存支持的内部工作原理的事情是,它不是在 cacheManager 和 KeyGenerator 实现之外注入的依赖关系。我想对 CacheAspectSupport 进行子类化/扩展,发现这个类首先由 CacheInterceptor 扩展,然后使用类 ProxyCachingConfiguration 中的新语句创建该类。为了能够替换一个类/方法需要替换整个类列表,这听起来不是很适合春天(诚然,我可能会错过一些东西)。

我对更换该行的期望是一组完整列出的弹簧豆,它们组成了构成缓存支持的所有 AOP 切入点、建议/方面等,但似乎这只是静态创建的类,彼此之间紧密耦合。

最新更新