栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

可刷新和不可刷新的ApplicationContext详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

可刷新和不可刷新的ApplicationContext详解

public class Main {
    public static void main(String[] args) {
      
        
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(config.class);
        applicationContext.refresh();
        System.out.println(applicationContext.getBean("user"));
    }
}

报错 

public class Main {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

       
        applicationContext.refresh();
        System.out.println(applicationContext.getBean("user"));
    }
}

 很容易看出,前者是不可刷新的,后者是可刷新的,为什么?

 

因为所继承的东西不一样,所以产生差异!! 

看看refresh()方法
  ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

       
        applicationContext.refresh();
        System.out.println(applicationContext.getBean("user"));
        System.out.println(applicationContext.getBean("user"));

 

  ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");

       

        System.out.println(applicationContext.getBean("user"));
        applicationContext.refresh();
        System.out.println(applicationContext.getBean("user"));

 

 发现refresh()放在中间,取出来的对象就变了

 来波总结:

当你refresh的时候,原先注册的bean就被销毁了,重新进行加载配置文件创建bean的操作。

 我们拿个案例来分析一下:

此时修改编译路径下的spring.xml

改前

 

改后:

 继续走:

 验证了上面的总结!!!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630758.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号