学习Spring的最好途径还是官方的文档,将官方文档翻译并简化一下可以提升自己的编码水平。
基于Spring 5.3.7版本的文档。
IoC容器:
IoC:是Inversion of Control的缩写,意思是控制反转。
IoC也被称作dependency injection (DI),依赖注入。
对象仅仅通过构造器参数、工厂方法参数或者实例化后,通过方法设置属性,来定义它们的依赖。
org.springframework.beans
org.springframework.context
上面两个包是Spring 框架的基本IoC容器。
BeanFactory 接口提供一个高级的设置机制,适用于所有类型的对象。
ApplicationContext 是 BeanFactory 的子接口,多了:
更容易和Spring’s AOP集成在一起; |
信息资源处理 (国际化); |
事件发布; |
用于web应用的应用层专用context,像:WebApplicationContext; |
简而言之,BeanFactory提供了设置框架和基本的功能,而且ApplicationContext添加了更多的企业级用途的功能。ApplicationContext是BeanFactory的超集。
通过Spring IoC容器管理的对象称作beans。
Bean就是通过Spring IoC容器实例化、组装和管理的对象。
BeanFactory
不要用,除非需要完全控制bean(IoC没了),ApplicationContext是它的超集:
BeanFactory | ApplicationContext | |
bean初始化/装配 | Yes | Yes |
集成生命周期管理 | No | Yes |
自动注册BeanPostProcessor | No | Yes |
自动注册BeanFactoryPostProcessor | No | Yes |
便捷访问MessageSource(国际化支持) | No | Yes |
内置ApplicationEvent发布机制 | No | Yes |