我的 spring 项目有这个基于 java 的 JPA 配置:
@Configuration
@EnableJpaRepositories(basePackageClasses = {PackageMarker.class})
@EnableTransactionManagement(proxyTargetClass = true)
@EnableCaching
public class FooJPAConfig implements CachingConfigurer {
@Bean
@Override
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
@Bean
@Override
public KeyGenerator keyGenerator() {
return new DefaultKeyGenerator();
}
//...
}
如何告诉 spring 使用特定的 ehcache.xml
文件?
最佳答案
您需要更改cacheManager
才能集成EhCache。您当前的代码不会使 EhCache 参与进来。
配置如下
@Configuration
@EnableJpaRepositories(basePackageClasses = {PackageMarker.class})
@EnableTransactionManagement(proxyTargetClass = true)
@EnableCaching
public class FooJPAConfig implements CachingConfigurer {
@Bean
public EhCacheManagerFactoryBean cacheFactoryBean() {
EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("whatever-name.xml")); //this is where you set the location of the eh-cache configuration file
return ehCacheManagerFactoryBean;
}
@Bean
@Override
public CacheManager cacheManager() {
EhCacheCacheManager cacheManager = new EhCacheCacheManager();
cacheManager.setCacheManager(cacheFactoryBean().getObject());
return cacheManager;
}
@Bean
@Override
public KeyGenerator keyGenerator() {
return new DefaultKeyGenerator();
}
}
您还必须将 spring-context-support
作为类路径的依赖项(适用于 Spring 3.2)
请注意,上面的代码激活 Spring -EhCache 集成,而不是 JPA - EhCache 集成。这意味着您可以在实体上使用 Spring 的 @Cacheable
而不是 EhCache 的 @Cache
。
关于java - 如何在基于spring java的配置中设置ehcache.xml的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623435/