您的位置:首页 > 编程语言 > Java开发

EhCache WebCache 与 SpringMVC集成时 CacheManager冲突的问题

2015-11-24 14:39 561 查看
在使用EhCache Web组件时 需要将
SimplePageCachingFilter 需要用到的CacheManager。


在EhCache2.5版本以上 同一个JVM当中不允许出现俩个相同名字的CacheManager 否则会报错。

默认情况下SimplePageCachingFilter 与 Spring各种都会创建一个CacheManager 这样在服务器启动时就会报错。

后来通过分析源代码解决了此问题。

在SimplePageCachingFilter当中我们看它是如何获取CacheManager的

protected CacheManager getCacheManager() {
return CacheManager.getInstance();
}


我们通过覆写这个方法 让它读取我们的 ehcache.xml

@Override
protected CacheManager getCacheManager() {
URL url = getClass().getResource("/ehcache.xml");
return CacheManager.create(url);
}


上面就完成了对CacheManager的管理 接下来就还需要配置Spring的CacheManager 让他俩都读取同一个文件就可以了。

<!-- 配置Ehcache缓存管理器,读取配置文件 -->
<bean id="ehCacheManagerFactoryBean" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="classpath:ehcache.xml"></property>
<property name="shared" value="true"></property>
</bean>

<!-- 配置缓存管理器,获取cache -->
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager" >
<property name="cacheManager" ref="ehCacheManagerFactoryBean" />
</bean>


shared:这个属性设置为true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: