是否可以为jsr107

时间:2015-11-14 06:53:39

标签: caching spring-boot ehcache jcache jsr107

我们需要为Jcache配置提供通用的XML配置参数(如timetolive) 我们正在使用EhCache进行开发,并且可能在其他环境中使用其他一些符合Jsr107标准的缓存提供程序,如Infinispan。

是否可以让两个缓存提供程序都使用单个配置文件,如果需要,我们只需要为不同的环境更改一些参数?

可以在属性文件中定义这些属性并使用它们来基于Profile?

初始化Cache管理器

我浏览了jsr107文档,但没有找到常见的xml缓存属性。

技术:Spring boot 1.2.3,Java 7

2 个答案:

答案 0 :(得分:0)

这取决于你需要使用什么。 JCache公开了可用于配置某些设置的ConfigurationMutableConfiguration个类。

Spring Boot 1.3(即将发布)具有完整的JCache集成;当您在项目中添加JSR-107提供程序时,Spring Boot将自动为您创建CacheManager。如果定义类型为JCacheManagerCustomizer的bean,则会在应用程序开始为请求提供服务之前调用它来自定义缓存管理器。

例如,这是一个更改过期策略的非常基本的配置:

@SpringBootApplication
@EnableCaching
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public JCacheManagerCustomizer cacheManagerCustomizer() {
        return cm -> {
            MutableConfiguration<Object, Object> configuration = new MutableConfiguration<>()
                .setExpiryPolicyFactory(CreatedExpiryPolicy
                    .factoryOf(Duration.ONE_HOUR));
            cm.createCache("foo", configuration);
        };
    }

}

答案 1 :(得分:0)

JSR-107没有指定任何与外部配置有关的内容 - xml,属性,你可以命名它。

因此,任何外部化配置解决方案都必须由您的代码或[Spring] [1]等框架提供。

[1]:见StéphaneNic​​oll的回答