net.sf.ehcache和org.ehcache之间有什么区别?

13

net.sf.ehcache和org.ehcache有什么区别?

net.sf.ehcache的当前版本是2.10.5,而org.ehcache的当前版本也是3.5.2。

Spring使用net.sf.ehcache的CacheManager,而org.ehcache的CacheManager不兼容。

这是有特定原因吗?请解释。


我在这里找到了一个合适的答案:ehcache-v2和ehcache-v3之间的差异关系 - H S Raju
2个回答

5

2
软件包的区别是明显的。另一个区别是Ehcache2在SVN仓库上,而Ehcache3则在GIT仓库上。但是难道就没有其他的区别了吗? - H S Raju

3

在不同的层面上,有所不同。使用ehcache 3.x版本时,Element已经不存在了。现在应该直接将键和值放入缓存中,因此您可以在创建缓存时提供类型:

      Cache<Long, String> myCache = cacheManager.getCache("myCache", Long.class, String.class);

因此,在检索值时,您可以避免使用getObjectValue而只是将Cache视为ConcurrentMap。这样,如果键不存在,您就不会得到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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接