beanFactory和ApplicationContext的区别和关系
程序员文章站
2022-05-24 12:01:00
...
ApplicationContext建立在BeanFactory的基础之上,提供了更多面向应用的功能, 它提供了国际化支持和框架事件体系,但有下面几点不同:
1、获取beanFactory和ApplicationContext方式不同
//ApplicationContext
public class Test {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
Student stu = applicationContext.getBean(Student.class);
System.out.println(stu.getName());
}
}
//BeanFactory
public class Test {
public static void main(String[] args) {
Resource resource = new ClassPathResource("application.xml");
BeanFactory beanFactory = new XmlBeanFactory(resource);
Student stu = beanFactory.getBean(Student.class);
System.out.println(stu.getName());
}
}
2、都可以获取bean,获取bean存在的区别
ApplicationContext在创建容器时,创建对象采取的策略时采用立即加载的方式。也就是说,只要一读取完配置文件马上就创建配置文件中的配置对象。(单例对象适用)
BeanFactory在构建核心容器时,创建对象采取的策略时采用延迟加载的方式。也就是说,什么时候根据id获取对象了,什么时候才真正创建对象。(多例对象适用)
3、对BeanPostProcessor中的方法调用方式不同
若使用BeanFactory,则必须要显示的调用其addBeanPostProcessor()方法进行注册,参数为BeanPostProcessor实现类的实例,并进行手动调用。
如果是使用ApplicationContext,那么容器会在配置文件在中自动寻找实现了BeanPostProcessor接口的Bean,然后自动注册,我们要做的只是配置一个BeanPostProcessor实现类的Bean就可以了。
上一篇: SpringMVC 国际化
推荐阅读
-
hp compaq 笔记本产品号、序列号、产品系列的区别和各自含义
-
浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别
-
insert into select和select into的使用和区别介绍
-
SQL查询中in和exists的区别分析
-
web服务器和应用服务器的区别,一文带你秒懂这两者的区别
-
webservice原理和技术(webservice和api的区别)
-
锚文本和超链接的区别,五分钟让你搞懂这两者的使用方法
-
Java中HashMap和TreeMap的区别深入理解
-
hadoop搭建步骤(spark和hadoop的区别)
-
封装app是什么意思,盘点封装app和原生app的区别