我在我的项目中使用了基于Spring声明式注解的缓存。
applicationContext.xml
<cache:annotation-driven />目前,使用基于spring注解的缓存,一切都工作得很好。在开发环境和本地环境中,我们使用基于ehCache和ConcurrentHashMap的底层缓存机制。
现在项目中有一个需求,我需要用一些特定的业务需求来更新Spring缓存框架的行为。
我想知道有没有人帮我弄清楚我该怎么替换它
<cache:annotation-driven /> 使用任何spring类定义的注释,我可以在其中自定义行为吗?
发布于 2012-09-26 03:32:53
查看org.springframework.cache.annotation.EnableCaching.请看源代码中的注释。
它做的等同于< />:注解驱动的缓存,但在spring java配置中。
你可能需要重写这个类: org.springframework.cache.aspectj.AnnotationCacheAspect
它负责将建议连接起来。
发布于 2012-09-29 04:29:19
这个答案把我引向了正确的方向。我发现spring缓存支持的内部工作原理是,它的依赖项不会被注入到cacheManager和KeyGenerator实现之外。我想对CacheAspectSupport进行子类化/扩展,发现这个类首先是由CacheInterceptor扩展的,然后在ProxyCachingConfiguration类中使用新的语句创建该类。为了能够替换一个类/方法,需要替换整个类列表,这听起来不太适合spring (诚然,我可能遗漏了一些东西)。
我期望替换这行代码的是一组完整列出的spring bean,它们组成了构成缓存支持的所有AOP切入点、建议/方面等,但看起来这就像是在静态地创建彼此之间紧密耦合的类。
https://stackoverflow.com/questions/12589516
复制相似问题