spring的BeanFctory工厂

来源:互联网 发布:风险概率和影响矩阵 编辑:程序博客网 时间:2024/06/05 17:16

前言

入门总结之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()的时候,才加载文件,也就是说第一个人第一次访问的时候,才 开始加载,那么效率就下降了。