Я реализую модуль с механизмом Spring Cache. Модуль является общим и может кэшировать различные типы объектов. Поэтому я не хочу менять код Java и хочу, чтобы пользователь соответствующим образом настроил файл applicationcontext.xml. Он может поместить имена различных типов сущностей в applicationcontext.xml, и код должен работать. Например, -
<context:annotation-config/>
<cache:annotation-driven cache-manager="cacheManager"/>
<context:component-scan base-package="com.nokia.oss.sure.adapter"/>
<bean id="NetworkEntityService" class="com.nokia.oss.sure.adapter.cache.NetworkEntityServiceImpl"/>
<bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<set>
<bean class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean" name="NetworkEntity"/>
</set>
</property>
</bean>
Он может изменить NetworkEntity на ServiceEntity и т. Д.
Так что в коде Java мне нужно упомянуть -
@CacheConfig(cacheNames={"NetworkEntity"})
Или я могу поставить то же самое для каждого метода -
@CachePut(cacheNames="NetworkEntity", key="#entity.sureName")
public Entity addEntity(Entity entity) {
return entity;
}
Но, как я уже говорил ранее, я не хочу помещать имя кэша "NetworkEntity" в код Java, но хочу добавить его в файл applicationcontext.xml. Является ли это возможным?
Кроме того, можно ли опустить все аннотации в файле Java? Если я просто использую AbstractApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
, можно ли упомянуть в файле applicationContext.xml, какие методы я хочу применить для аннотации @Cacheable, например,
Я много искал, нигде не мог его найти.
Спасибо
Nirmalya