Spring IoC容器:BeanFactory和ApplicationContext的异同点

IoC 是指在程序开发中,实例的创建不再由调用者管理,而是由 Spring 容器创建。Spring 容器会负责控制程序之间的关系,而不是由程序代码直接控制,因此,控制权由程序代码转移到了 Spring 容器中,控制权发生了反转,这就是 Spring 的 IoC 思想。

 BeanFactory和ApplicationContext都是Spring框架中的IOC容器

ApplicationContext是BeanFactory的子接口

接口图


BeanFactory和ApplicationContext的不同点

ApplicationContext接口继承更多接口,功能更强大

  •       继承MessageSource,因此支持国际化。
  •       继承ResourceLoader,统一的资源文件访问方式。
  •       继承ApplicationEventPublisher,支持发布应用上下文
  •       提供在监听器中注册bean的事件。
  •       同时加载多个配置文件。

装载bean的方式不同

  • BeanFactory:延迟实例化,在启动IOC容器时不会实例化Bean,只有在使用到某个Bean时(调用getBean方法获取实例化对象时),才对该Bean进行加载实例化,类似单例模式的懒汉模式
  • ApplicationContext:在启动IOC容器时会预先实例化单例Bean,通过设置bean的属性lazy-init=true来让Bean延迟实例化,类似单例模式的饿汉模式

注册后置处理器的方式不同

BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册。


:BeanPostProcessor、BeanFactoryPostProcessor为后置处理器。

后置处理器作用是在Bean对象在实例化和依赖注入完毕后,在显示调用初始化方法的前后添加我们自己的逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值