我一直使用 java 单例类来满足我的基本缓存需求。
现在该项目正在使用 ehcache 并且没有深入研究源代码,我无法弄清楚单例模式有什么问题。
即使用ehcahce框架除了缓存可以通过xml配置和注解不用写样板代码(即静态HashMap)来完成之外还有什么好处
我一直使用 java 单例类来满足我的基本缓存需求。
现在该项目正在使用 ehcache 并且没有深入研究源代码,我无法弄清楚单例模式有什么问题。
即使用ehcahce框架除了缓存可以通过xml配置和注解不用写样板代码(即静态HashMap)来完成之外还有什么好处
这取决于您对缓存机制的需求。Ehcache 提供了很多很酷的功能,需要大量精心设计的代码手动完成:
我建议您在http://ehcache.org/about/features上查看它们,然后确定您的项目中是否真的需要一些东西。
最重要的一个:
溢出到磁盘的能力——这是你在普通的 HashMap 中没有的东西,写这样的东西绝非易事。EhCache 可以像配置键值数据库一样简单。
即使您不使用溢出到磁盘,也有一个大型样板文件可以用您自己的实现来编写。如果可以加载整个数据库,那么使用具有写入持久性和启动时恢复的内存数据库将是解决方案。但是内存是有限的,你必须从内存中删除元素。但是哪一个,基于什么?此外,您必须断言缓存元素不会太旧。旧的元素应该被替换。如果您需要从缓存中删除元素,则应从过时的元素开始。但是当用户请求某些东西时你应该这样做吗?它会减慢请求。还是开始自己的线程?
使用 EhCache,您可以在其中解决和测试所有这些问题的库。
还有一个 ehcache 的集群闭源版本,它允许您拥有分布式缓存。这可能是您可能要考虑使用 ehcache 的原因之一。