spring的BeanFactory和applicationContext有什么区别?

一、加载bean时机不同

        ApplicationContext是一次性立刻加载,比较消耗资源但是后续读取非常快,会将spring中所有的bean进行初始化,全部实例化到spring中!!属于饿汉模式加载

        Beanfactory是一个用来管理bean对象的工厂,加载bean的时候不会立刻一次性加载,使用的是惰性加载,只有执行调用get bean方法才会加载对应的bean。

二、功能不同

        Spring有两个顶级接口,BeanFactory和ApplicationContext接口,其中BeanFactory提供了基础的访问容器的能力,而ApplicationContext属于BeanFactory的子接口,除了实现了BeanFactory接口之外,还增强了自己的功能,支持国际化资源绑定、和消息处理事件发布和监听、AOP(面向切面编程)、支持Web应用程序

        ApplicationContext接口是通过多态方式获取spring上下文,然后获取上下文里面bean id配置的bean对象。

  • 
    ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    
    
    
        
        
        
        
    

spring的BeanFactory和applicationContext有什么区别?_第1张图片

三、资源消耗不同

        由于BeanFactory是延迟初始化的,因此在应用程序运行时,它只会实例化被访问的bean,因此它的资源消耗较少。而ApplicationContext在启动时就会实例化所有的bean,因此它的资源消耗较大

你可能感兴趣的:(spring,java,spring,boot)