我有一个 util 模块,它可以生成一个用于其他应用程序的 jar。我希望这个模块使用缓存,并且更喜欢使用 Spring 的 annotation-driven
缓存。
所以 Util-Module
会有这样的东西:
DataManager.java
...
@Cacheable(cacheName="getDataCache")
public DataObject getData(String key) { ... }
...
数据管理器-ehcache.xml
...
<cache name="getDataCache" maxElementsInMemory="100" eternal="true" />
...
data-manager-spring-config.xml
...
<cache:annotation-driven cache-manager="data-manager-cacheManager" />
<!-- ???? --->
<bean id="data-manager-cacheManager"
class="org.springframework.cache.ehcache.EhcacheCacheManager"
p:cache-manager="data-manager-ehcache"/>
<bean id="data-manager-ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:config-location="data-manager-ehcache.xml"/>
...
我还希望我的可部署单元通过 Spring 注释进行缓存,同时将上述 jar 作为依赖项。所以我的 Deployable-Unit
会有这样的东西:
MyApp.java
...
@Cacheable(cacheName="getMyAppObjectCache")
public MyAppObject getMyAppObject(String key) { ... }
...
my-app-ehcache.xml
...
<cache name="getMyAppObjectCache" maxElementsInMemory="100" eternal="true" />
...
my-app-spring-config.xml
...
<cache:annotation-driven cache-manager="my-app-cacheManager" />
<!-- ???? --->
<bean id="my-app-cacheManager"
class="org.springframework.cache.ehcache.EhcacheCacheManager"
p:cache-manager="my-app-ehcache"/>
<bean id="my-app-ehcache"
class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
p:config-location="my-app-ehcache.xml"/>
...
问题:
是否可以在主项目和依赖模块中使用注释驱动的缓存,同时保持配置分离?
如果不是,请解释为什么不是。如果是这样,将不胜感激对上述配置中需要更改的内容的解释。
最佳答案
<cache:annotation-driven cache-manager="cacheManager" />
<bean id="cacheManager" class="org.springframework.cache.support.CompositeCacheManager">
<property name="cacheManagers">
<array>
<ref bean="cacheManager1" />
<ref bean="cacheManager2" />
</array>
</property>
<property name="addNoOpCache" value="true" />
</bean>
关于spring - 在多个模块中使用 Spring 缓存注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8658789/