當apache shiro跟spring cache結合使用時

如果雙方都用ehcache作爲緩衝庫的話,對於cachemanger的設定會產生衝突,因爲如果沒有給shiro的EhCacheManager設定cachemanager的話,會創建一個默認名稱的cachemanager,而spring的cache自動配置也同樣會創建一個默認名稱的cachemanager,由於ehcache2.5以後,不允許同一個jvm上存在兩個同樣名字的cachemanager,所以會報錯。

解決的方法有兩個,一個是自定義配置java文件,把名稱改爲另外一個,或者乾脆就用同一個cachemanager。

下面是用同一個cachemanager時的配置方法。

	@Bean(name = "ehcache")
	public EhCacheManagerFactoryBean ehCacheManagerFactoryBean(){
		EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
		ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
		ehCacheManagerFactoryBean.setShared(true);
		return ehCacheManagerFactoryBean;
	}
	
	@Bean(name = "cacheManager")
	public EhCacheCacheManager ehCacheCacheManager(){
		EhCacheCacheManager ehCacheCacheManager = new EhCacheCacheManager();
		ehCacheCacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject());
		return ehCacheCacheManager;
	}
	@Bean(name = "ehCacheManager")
	@DependsOn("lifecycleBeanPostProcessor")
	public EhCacheManager ehCacheManager(){
		EhCacheManager ehCacheManager = new EhCacheManager();
		ehCacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject());
		return ehCacheManager;
	}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章