我有一个服务项目和网络项目。我需要在两个项目中都有 eh-cache。
在这里,一些时间服务项目也通过批处理工作。所以我们需要在 web 和 service 项目中单独缓存。
此时,我的 web 项目也将 eh-cache 用于自己的目的。我对 eh-cache 没有多少经验,我担心这两个项目在部署在一起时可能会发生冲突。我也没有在 eh-cache 站点上找到相关信息。
您能否提供一些信息如何最好地配置这两个项目,以便我能够实现上述要求?
网络项目:
@Bean
public EhCacheCacheManager ehCacheCacheManager() {
net.sf.ehcache.CacheManager cacheManager = ehCacheManagerFactoryBean().getObject();
return new EhCacheCacheManager(cacheManager);
}
@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
EhCacheManagerFactoryBean cacheManagerFactoryBean = new EhCacheManagerFactoryBean();
cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
cacheManagerFactoryBean.setShared(true);
return cacheManagerFactoryBean;
}
服务项目:
@Bean
public IServiceCacheManager cacheManager() {
return new ServiceCacheManager();
}
public ServiceCacheManager() {
EhCacheManagerFactoryBean factory = new EhCacheManagerFactoryBean();
factory.setConfigLocation(new ClassPathResource("service-ehcache.xml"));
factory.setShared(true);
factory.afterPropertiesSet();
setCacheManager(factory.getObject());
}
public ServiceCacheManager(net.sf.ehcache.CacheManager cacheManager) {
super(cacheManager);
}
另外,我也尝试给出 bean 名称。如下所示。
@Bean(name="WebCacheManager")
public EhCacheCacheManager ehCacheCacheManager() {
net.sf.ehcache.CacheManager cacheManager = ehCacheManagerFactoryBean().getObject();
return new EhCacheCacheManager(cacheManager);
}
@Bean(name="ServiceCacheManager")
public ServiceCacheManager cacheManager() {
return new CBAEngineCacheManager();
}
上面的配置也不起作用。
谢谢!婆罗提