首先说echache创建对象的四种方式
首先分为两大类,1使用默认的缓存配置文件
- public static void main(String[] args)
- {
- CacheManager mgr1 = CacheManager.getInstance();
- CacheManager mgr2 = CacheManager.create();
- CacheManager mgr3 = CacheManager.newInstance();
- System.out.println(mgr1 == mgr2);// true
- System.out.println(mgr1 == mgr3);// true
- }
2,根据自定义配置文件
- URL url = TestCacheManager.class.getClassLoader().getResource("conf/ehcache.xml");
- CacheManager mgr1 = CacheManager.create(url);
- CacheManager mgr2 = CacheManager.create("src/conf/ehcache.xml");
- CacheManager mgr3 = CacheManager.newInstance("src/conf/ehcache.xml");
- System.out.println(mgr1 == mgr2);// true
- System.out.println(mgr1 == mgr3);// true
如果已经存在,就不会再创建:
- CacheManager mgr1 = CacheManager.create(url);
- CacheManager mgr2 = CacheManager.create("src/conf/ehcache.xml"); 如果已经存在,还会继续创建:
- CacheManager mgr3 = CacheManager.newInstance("src/conf/ehcache.xml") 当使用ehcache.xml创建CacheManager对象的时候,CacheManager中的singleton属性会记录创建的对象值,即创建了CacheManager对象,singleton会记录该单例对象,不再是null;
CacheManager.create()和CacheManager.getInstance()都会先判断singleton属性是否为null,如果为null则继续调用newInstance(),如果不为null则直接返回。所以mgr1==mgr4==mgr5;CacheManager.newInstance();不会判断singleton是否为null,直接使用默认的ehcache-failsafe.xml,新建一个CacheManager对象,所以mgr1 != mgr