对于Jcache配置,我们需要有通用的XML配置参数(比如timetolive)。
我们正在使用EhCache for Development,并且可能在其他环境中使用其他兼容Jsr107的缓存提供程序,比如Infinispan。
是否可以让两个缓存提供程序都使用单个配置文件,并且如果需要的话,我们只需要为不同的环境更改一些参数?
可以在属性文件中定义这些属性并使用它们根据配置文件初始化缓存管理器吗?
我查看了jsr107文档,但没有找到常见的XML缓存属性。
技术:SpringBoot1.2.3,Java 7
发布于 2015-11-14 07:56:43
这取决于你需要使用什么。JCache公开可用于配置某些设置的Configuration和MutableConfiguration类。
SpringBoot1.3(即将发布)具有完整的JCache集成;当您在项目中添加一个JSR-107提供程序时,Spring将自动为您创建一个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);
        };
    }
}发布于 2015-11-17 08:17:01
JSR-107没有指定任何关于外部配置- xml,属性,您可以给它命名。
因此,任何外部化的配置解决方案都必须由代码或Spring这样的框架提供。
1:见Stéphane Nicoll的答复
https://stackoverflow.com/questions/33705957
复制相似问题