net.sf.ehcache 和 org.ehcache 的区别?
Difference between net.sf.ehcache and org.ehcache?
net.sf.ehcache和org.ehcache有什么区别?
net.sf.ehcache 的当前版本是 2.10.5 而 org.ehcache 的当前版本是 3.5.2。
Spring 使用 net.sf.ehcache 的 CacheManager,而 org.ehcache 的 CacheManager 不兼容。
有什么具体原因吗?请解释。
您可以在页面 http://www.ehcache.org/downloads/ 上验证,Ehcache 3 使用包前缀 org.ehcache
,Ehcache 2 使用包前缀 net.sf.ehcache
。就是这样。
很多层次都有不同。使用 ehcache 3.x,元素不再存在。应该直接把key和value放到Cache里面,这样在创建cache的时候就可以提供types了:
Cache<Long, String> myCache = cacheManager.getCache("myCache", Long.class, String.class);
因此,在检索值时,您避免了 getObjectValue 的麻烦,而只是像对待 ConcurrentMap 一样对待 Cache。因此,如果密钥不存在,您将不会得到 NullPointerException,因此您不需要检查 cache.get(cacheKey) != null
cache.get(cacheKey);
CacheManager的实例化方式也发生了变化。你不会 getInstance 所以它不再是单例了。相反,你得到一个更好的构建器,特别是你可以为它提供内联配置参数:
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("preConfigured",
CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class,
ResourcePoolsBuilder.heap(100))
.build())
.build(true);
net.sf.ehcache和org.ehcache有什么区别?
net.sf.ehcache 的当前版本是 2.10.5 而 org.ehcache 的当前版本是 3.5.2。
Spring 使用 net.sf.ehcache 的 CacheManager,而 org.ehcache 的 CacheManager 不兼容。
有什么具体原因吗?请解释。
您可以在页面 http://www.ehcache.org/downloads/ 上验证,Ehcache 3 使用包前缀 org.ehcache
,Ehcache 2 使用包前缀 net.sf.ehcache
。就是这样。
很多层次都有不同。使用 ehcache 3.x,元素不再存在。应该直接把key和value放到Cache里面,这样在创建cache的时候就可以提供types了:
Cache<Long, String> myCache = cacheManager.getCache("myCache", Long.class, String.class);
因此,在检索值时,您避免了 getObjectValue 的麻烦,而只是像对待 ConcurrentMap 一样对待 Cache。因此,如果密钥不存在,您将不会得到 NullPointerException,因此您不需要检查 cache.get(cacheKey) != null
cache.get(cacheKey);
CacheManager的实例化方式也发生了变化。你不会 getInstance 所以它不再是单例了。相反,你得到一个更好的构建器,特别是你可以为它提供内联配置参数:
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache("preConfigured",
CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class,
ResourcePoolsBuilder.heap(100))
.build())
.build(true);