2015-11-14 122 views
0

的常见xml配置我们需要为Jcache配置提供常见的XML配置参数(如timetolive)。
我们正在使用EhCache进行开发,并可能在其他环境中使用其他符合Jsr107标准的缓存提供程序,如Infinispan。是否有可能为所有Cache提供商提供jsr107

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

可以在属性文件中定义这些属性并使用它们根据配置文件初始化缓存管理器吗?

我经历了jsr107文档,但没有发现常见的xml缓存属性。

技术:春天开机1.2.3,Java 7的

+0

正如斯特凡尼科尔和路易斯提到的,不可能对所有常见的配置文件。但是你可以使用Spring boot 1.3中提供的自动配置功能。你可以在下面找到gitHub的例子,由StéphaneNic​​oll贡献https://github.com/spring-projects/spring-boot/tree/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/cache – YogeshK

回答

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); 
     }; 
    } 

} 
+0

要求是:“作为产品开发人员,我想定义2个缓存组:具有不同特性的参考数据和利率,例如timeToLive。我只想定义一次 - 供EHCache和JBOSS使用Infinispan_”。我们正在尝试创建可插入式缓存配置微服务,该服务可用于不同的JCache管理提供程序,并提供单个xml或属性文件更改。 – YogeshK

+0

由于xml config没有共同的属性,因此将在类路径,spring配置文件和作用域中使用提供程序特定的配置来决定在运行时使用哪个提供程序。 – YogeshK

+0

如果底层JSR-107提供者支持它(Ehcache和infinispan),你可以使用'spring.cache.jcache.config'指向实际配置文件 –

0

JSR-107没有指定至于外部配置任何东西 - XML,属性,你的名字。

因为任何外部配置解决方案都必须由您的代码或像[Spring] [1]这样的框架提供。

[1]:见斯特凡尼科尔的答案

+0

正确的,暂时将使用Spring配置文件在运行时创建所需的jCachemanager实例。感谢您的回复 :) – YogeshK