0

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

应用程序上下文.xml

<cache:annotation-driven />

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

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

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

<cache:annotation-driven /> 

这个注释带有任何可以自定义行为的弹簧类定义?

4

2 回答 2

2

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

它相当于 < cache:annotation-driven /> 但在 spring java config 中。

你将需要重写这个类:org.springframework.cache.aspectj.AnnotationCacheAspect

它负责将通知接线。

于 2012-09-25T19:32:52.537 回答
0

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

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

于 2012-09-28T20:29:18.723 回答