1 Spring IoC依赖查找
延迟依赖查找主要用于获取 BeanFactory 后,不马上获取相关的 Bean,比如在 BeanFactoryPostProcessor 接口中获取 ConfigurableListableBeanFactory 时,不马上获取,降低 Bean 过早初始化的情况
2 Spring IoC依赖注入
3 Spring IoC 依赖来源
• 自定义 Bean
• 容器內建 Bean 对象
• 容器內建依赖
4 Spring IoC 配置元信息
5 BeanFactory和ApplicationContext有何区别?
● ApplicationContext是BeanFactory的子接口
● BeanFactory是一个底层的IOC容器,提供了IOC容器的基本实现,而ApplicationContext则是BeanFactory的超集提供了丰富的企业级特性。
● ApplicationContext是委托DefaultListableBeanFactory来实现Bean的依赖查找和依赖注入。
ApplicationContext 除了 IoC 容器角色,还有提供:
• 面向切面(AOP)
• 配置元信息(Configuration Metadata)
• 资源管理(Resources)
• 事件(Events)
• 国际化(i18n)
• 注解(Annotations)
• Environment 抽象(Environment Abstraction)
6 ioc容器的状态
启动 运行 停止
IoC容器启动(主要阶段): 1.前期准备工作(记录IoC容器启动时间,校验必要的属性值...) 2.创建一个BeanFactory,注册一些内建的Bean对象或者Bean依赖和内建的非Bean的依赖 3.对BeanFactory进行扩展,通过BeanFactoryPostProcessors 进行操作 4.对Bean的进行扩展,通过BeanPostProcessors 进行操作 5.做一些国际化的资源设置 6.完成一个IoC容器启动事件的广播 IoC容器的停止(主要阶段): 1.销毁容器里面的所有Bean对象 2.销毁BeanFactory
面试题
BeanFactory 与FactoryBean?
BeanFactory 是 IoC 底层容器 FactoryBean 是 创建 Bean 的一种方式,帮助实现复杂的初始化逻辑