2012-09-25 39 views
0

我在我的项目中使用基于Spring声明式注释的缓存。声明式Spring缓存自定义

的applicationContext.xml

<cache:annotation-driven /> 

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

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

我想知道如果任何人帮我弄明白我怎么能代替

<cache:annotation-driven /> 

将此批注与任何弹簧类的定义,我可以自定义的行为?

回答

2

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

它相当于<缓存:注释驱动/>但在春季java配置。

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

其负责接线劝

0

这个回答导致我在正确的方向。我从spring中发现的关于缓存支持的内部工作原理是,它不是在cacheManager和KeyGenerator实现之外注入的Dependency。我想要继承/扩展CacheAspectSupport,发现这个类首先被CacheInterceptor扩展,但是这个类是使用类ProxyCachingConfiguration中的新语句创建的。为了能够替换一个类/方法,将取代一些听起来不太适合春天的类(尽管我可能会错过某些东西)。

我期望从换行中得到一个完整列出的Spring bean集合,它组成了构成缓存支持的所有AOP切入点,建议/方面等,但它看起来像这样只是静态创建的类彼此之间紧密耦合。