前言
入门总结之Spring框架中的工厂(了解)
1. ApplicationContext接口
* 使用ApplicationContext工厂的接口,使用该接口可以获取到具体的Bean对象
* 该接口下有两个具体的实现类
* ClassPathXmlApplicationContext -- 加载类路径下的Spring配置文件
* FileSystemXmlApplicationContext -- 加载本地磁盘下的Spring配置文件
2. BeanFactory工厂(是Spring框架早期的创建Bean对象的工厂接口)
* 使用BeanFactory接口也可以获取到Bean对象
public void run(){
BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
UserService us = (UserService) factory.getBean("us");
us.sayHello();
}
* BeanFactory和ApplicationContext的区别
* BeanFactory -- BeanFactory采取延迟加载,第一次getBean时才会初始化Bean
* ApplicationContext -- 在加载applicationContext.xml时候就会创建具体的Bean对象的实例,还提供了一些其他的功能
* 事件传递
* Bean自动装配
* 各种不同应用层的Context实现
分析
spring它是有工厂的,找的顺序是:功能=》工厂=》xml=》实现类。
其中ApplicationContext这个接口,是最新的,最常使用的,它下面有2个实现类,ClassPathApplicationContext主要是加载src下的配置文件,还有一个是FileSystemApplicationContext系统文件主要是加载在其他磁盘下的。现在基本都是方在src下面的,所以ClassPathApplicationContext用的会比较多。
如下是两个工厂的代码实现:
以上是spring的2个工厂,其中横杠说明该方法已经过时,但是可以使用。
那么BeanFactory和ApplicationContext的差别,最主要的差别就是,ApplicationContext在创建实现类的实例的时候,就把配置文件加载好了。也就是说,在tomcat启动的时候就加载好了。而BeanFactory是在实例化之后,在getBean()的时候,才加载文件,也就是说第一个人第一次访问的时候,才 开始加载,那么效率就下降了。