2015-11-14 171 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

相關問題