繁体   English   中英

哪个缓存管理器/缓存库用于 Spring 和 EHCache 3?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM