我们可以替换 XMl 文件中的 Springframework 注释(@CacheConfig、@Cacheable、@CachePut)吗?
Can we replace Springframework annotations (@CacheConfig, @Cacheable, @CachePut) in the XMl file?
我正在使用 Spring 缓存机制实现一个模块。该模块是通用的,可以缓存不同类型的实体。所以我不想更改 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 注释的方法是什么,例如
我找了很多,找不到。
谢谢
尼尔玛利亚
我找到了答案。我们可以把下面的内容放在 applicationContext.xml -
<!-- define caching behavior -->
<cache:advice id="cacheAdviceInterface" cache-manager="cacheManager">
<cache:caching cache="NetworkEntity">
<cache:cacheable method="getEntity"/>
<cache:cache-put method="putEntity"/>
</cache:caching>
</cache:advice>
在那种情况下,我们不需要将@CacheConfig、@CachePut 等注释放在Java 文件中。
我正在使用 Spring 缓存机制实现一个模块。该模块是通用的,可以缓存不同类型的实体。所以我不想更改 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 注释的方法是什么,例如
我找了很多,找不到。
谢谢 尼尔玛利亚
我找到了答案。我们可以把下面的内容放在 applicationContext.xml -
<!-- define caching behavior -->
<cache:advice id="cacheAdviceInterface" cache-manager="cacheManager">
<cache:caching cache="NetworkEntity">
<cache:cacheable method="getEntity"/>
<cache:cache-put method="putEntity"/>
</cache:caching>
</cache:advice>
在那种情况下,我们不需要将@CacheConfig、@CachePut 等注释放在Java 文件中。