ehcache 创建创建单一实例与否的判断,以及,哪个静态方法,只在不存在的时候创建

来源:互联网 发布:不可抗力网络剧正片 编辑:程序博客网 时间:2024/04/30 04:18

首先说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,根据自定义配置文件


    1. URL url = TestCacheManager.class.getClassLoader().getResource("conf/ehcache.xml");  
    2. CacheManager mgr1 = CacheManager.create(url);  
    3. CacheManager mgr2 = CacheManager.create("src/conf/ehcache.xml");  
    4. CacheManager mgr3 = CacheManager.newInstance("src/conf/ehcache.xml");  
    5.   
    6. System.out.println(mgr1 == mgr2);// true  
    7. System.out.println(mgr1 == mgr3);// true 
    其次:这几种方式哪几种如果已经创建cacheManager 实例,就不会再创建的;哪个会继续创建新的cacheManager实例

    如果已经存在,就不会再创建:

  • 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



  • 1 0
    原创粉丝点击