我最近开始使用EHCache进行缓存。我知道,如何在Java代码中使用它,但我仍然不确定配置文件。
所以,我有一个耳朵项目,包括几个战争模块。如果所有这些模块都使用ehcache,我应该在WEB-INF中为每个模块放置一个ehcache.xml副本,还是将它放在ear文件本身(META-INF可能?)
此外,文档中还不清楚所有这些模块是否都使用相同的缓存实例?该应用程序部署在glassfish,EHCache将为每个模块运行相同的缓存,或者每个模块在使用时将获得他自己的单例实例:
CacheManager singleton = CacheManager.create();
答案 0 :(得分:2)
放入您的ehcache配置文件没有硬性规定。 但是,我个人保持我的ehcache配置文件与所有其他配置 和属性文件。
例如,我将在一些静态最终变量中存储我的ehcache config xml文件的路径,(有助于保持路径可配置)
private static final String EHCACHE_CONFIG = "<path to this file>/ehcache.xml";
然后当我初始化缓存管理器时,我提供了配置路径 file作为参数
CacheManager manager = new CacheManager(EHCACHE_CONFIG);
答案 1 :(得分:1)
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/context-config.xml</param-value> </context-param>
然后您可以添加 context-config.xml 文件:
<import resource="context-config.xml"/>
context-config.xml 文件可能包含cacheManager bean的描述,您可以自动装配在哪里需要它。所以 context-config.xml 可能如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"/>
</bean>
</beans>
回答你的第二个问题。从我的例子中,它将取决于你将如何定义这个bean,你可以将它定义为单例,然后你将只有一个cacheManager实例,或者你可以将实例化留给Spring。 在我看来,你可以使用通用逻辑将cacheManager自动装配到类中,用于缓存失效或缓存&#34;创建&#34;这将很有意义。希望我帮助过你。