您现在的位置是:首页 >技术教程 >spring的BeanFactory和applicationContext有什么区别?网站首页技术教程

spring的BeanFactory和applicationContext有什么区别?

fighting!899 2023-05-31 16:00:03
简介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");
    
    
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

三、资源消耗不同

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

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。