java - 如何在基于spring java的配置中设置ehcache.xml的位置?

标签 java spring jpa ehcache

我的 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/

相关文章:

java - Applet 不从 appletviewer 显示

java - 如何修复 URI 未在 ClientProtocolException : 中指定有效的主机名

java - 扩展 ArrayList 的类无法正确序列化

java - Spring应用程序上下文无法在maven资源文件夹下找到属性文件

java - 如何避免ManyToMany关系上的双向插入

java - 设置网格宽度时在 JDialog w/GridBagLayout 中重叠

java - HibernateJPAVendorAdapter 和 JPAProperty 中的属性之间的优先级

spring - 如何在Grails中从Spring Security获取普通密码或解密密码?

java - Spring Data JPA save() 返回实体

java - 返回实体列表而不是对象列表