• Spring3.x企业应用开发笔记之BeanFactory与ApplicationConText区别


    SpringIoC容器就是一个实现了BeanFactory接口的可实例化类。事实上,Spring提供了两种不同的容器:一种是最基本的BeanFactory,另一种是扩展的ApplicationContext。BeanFactory 仅提供了最基本的依赖注入支持,而 ApplicationContext 则扩展了BeanFactory ,提供了更多的额外功能。实例化这两种容器时是有区别的:

    (1)BeanFactory

    public class BeanFactoryTest {
        public static void main(String[] args) throws Throwable{
           ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
           Resource res = resolver.getResource("classpath:com/baobaotao/beanfactory/beans.xml");
           System.out.println(res.getURL());
           BeanFactory bf = new XmlBeanFactory(res);
           System.out.println("init BeanFactory.");
           
           Car car = bf.getBean("car",Car.class);
           System.out.println("car bean is ready for use!");
           car.introduce();
        }
    }

    (2)ApplicationContext

    public class XmlApplicationContextTest {
    
        public static void main(String[] args) {
    //如果配置文件放置在类路径下,用户可以优先使用ClassPathXmlApplicationContext实现类 ApplicationContext ctx
    = new ClassPathXmlApplicationContext("com/baobaotao/context/*.xml"); Car car1 = ctx.getBean("car",Car.class);
    //如果配置文件放置在文件系统的路径下,则可以优先考虑使用FileSystemXmlApplicationContext实现类
    // ctx = new FileSystemXmlApplicationContext("D:/masterSpring/chapter3/src/com/baobaotao/context/*.xml"); // Car car2 = ctx.getBean("car",Car.class); } }

      ApplicationContext的初始化和BeanFactory有一个重大的区别:BeanFactory在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean;而ApplicationContext则在初始化应用上下文时就实例化所有的单实例的Bean。因此ApplicationContext的初始化时间会比BeanFactory稍长一些.

  • 相关阅读:
    leetcode122
    leetcode121
    leetcode773
    leetcode803
    leetcode658
    leetcode723
    leetcode134
    leetcode340
    leetcode721
    leetcode362
  • 原文地址:https://www.cnblogs.com/andgoo/p/2607242.html
Copyright © 2020-2023  润新知