[英]Which Cache Manager/Cache library to use for Spring and EHCache 3?
為 Spring Boot 應用程序集成 EhCache3 緩存提供程序。 我需要決定使用哪個緩存管理器。 理想情況下,我想在我的緩存方法上使用 Springs 緩存注釋,例如 @Cacheable 而不是 jsr (@CacheResult) 但對於緩存管理器/緩存庫,我無法決定以下內容
緩存庫注釋我決定使用 ehcache3 提供程序:
爪哇 | ehcache | 春天 | Jcache?(我認為是 jsr/javax) |
---|---|---|---|
javax.cache.Cache | org.ehcache.Cache | org.springframework.cache.Cache | org.springframework.cache.Cache |
javax.cache.Cache.CacheManager | org.ehcache.CacheManager | org.springframework.cache.CacheManager | org.springframework.cache.jcache.JCacheCacheManager |
關於哪個實施的任何建議? 也許我不清楚上述實現的區別以及何時選擇一個而不是另一個
ehcache 是一個非常古老且眾所周知的緩存庫。 它也是 Hibernate 中默認的二級緩存。 我在許多應用程序中都使用了 ehcache,沒有任何問題,所以我會選擇 ehcache。
簡短的回答:
EHCache3 沒有額外的 Spring 集成,而是通過通用 Java 緩存 API JCache/JSR107 集成進行集成。 相關官方文檔可見: https ://docs.spring.io/spring-framework/docs/5.3.x/reference/html/integration.html#cache-store-configuration-ehcache
更長的答案:
你提出的選項不是真正的選項,而是不同的概念。 我試着簡單解釋一下:
javax.cache.Cache
:這是符合 JSR107 的緩存實現的接口。 EHCache3 也提供了這個接口的實現。org.ehcache.Cache
:這是 EHCache3 緩存的本機接口,可能具有 JSR107 Cache
接口不支持的不同功能。 如果你的應用中只使用標准的 Spring,除了需要決定使用哪個緩存緩存實現的配置,你不會接觸到這個接口。org.springframework.cache.Cache
:即抽象的 Spring 緩存的接口。 它只有 Spring 所需的緩存操作的一小部分。 Spring Caching 總是使用這個接口。org.springframework.cache.jcache.JCacheCacheManager
:這是org.springframework.cache.CacheManager
可用 JCache 兼容緩存的實現。 這也將與 EHCache3 一起使用,因為 EHCache3 是通過 JSR107 集成的。因此,當使用符合 JSR107 的緩存時,有兩種 API 轉換:Spring 緩存實現轉換為 JSR107 緩存,而 JSR107 緩存實現轉換為本地緩存 API。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.