是否可以为 jsr107 的所有缓存提供程序供应商提供通用 xml 配置

Is it possible to have common xml configuration for all Cache provider vendors for jsr107

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

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

是否可以在属性文件中定义这些属性并使用它们来初始化基于 Profile 的缓存管理器?

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

技术:Spring boot 1.2.3,Java 7

这真的取决于你需要使用什么。 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);
        };
    }

}

JSR-107 没有指定任何关于外部配置的内容 - xml、属性,随便你怎么说。

因此,任何外部化配置解决方案都必须由您的代码或类似 [Spring][1].

的框架提供

[1]:参见 Stéphane Nicoll 的回答