1. IOC容器的三个核心部分
- 解析配置
- 定位与注册对象
- 注入对象
1. Bean 和 BeanDefinition
1.1 Bean
- Bean 的本质就是java对象,只是这个对象的声明周期由容器来管理
- 不需要为了创建Bean而在原来的java类上添加任何额外的限制
- 对Java对象的控制体现在配置上
1.2 BeanDefinition
根据配置,生成用来描述Bean的BeanDefinition,常用属性:
- 作用范围scope(@Scope)
- 懒加载 lazy-init(@Lazy):决定Bean 实例是否延迟加载
- 首选 primary(@Primary):设置为true的bean 会是优先的实现类
- factory-bean 和 factory-method(@Configuration和@Bean)
2. ApplicationContext常用容器
传统的基于XML配置的经典容器
- FileSystenXmlApplicationContext:从文件系统加载配置
- ClassPathXmlApplicationContext:从classpath 加载配置
- XmlWebApplicationContext:用于Web 应用程序的容器