Использование аннотации кэша Spring в нескольких модулях

У меня есть модуль утилиты, который создает банку для использования в других приложениях. Я бы хотел, чтобы этот модуль использовал кеширование, и предпочел бы использовать кеширование , управляемое аннотациями Spring .

Итак, Util-Module будет иметь что-то вроде этого:


DataManager.java

...
@Cacheable(cacheName="getDataCache")
public DataObject getData(String key) { ... }
...

data-manager-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, при этом указанная выше банка была включена в качестве зависимости. Итак, мой 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"/>
...

Вопрос:

Можно ли использовать кэширование, управляемое аннотациями, как в вашем основном проекте, так и в модуле зависимостей, сохраняя при этом конфигурации разделенными?

Если нет, было бы полезно объяснить, почему это не так. Если это так, было бы полезно объяснить, что нужно изменить в приведенной выше конфигурации.

31
задан Donal Fellows 28 December 2011 в 18:26
поделиться