[英]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.