StartDemo
public class StartDemo {
public static void main(String[] args) {
ApplicationContext context =
new AnnotationConfigApplicationContext("com.my.config");
TestConfig testConfig = context.getBean(TestConfig.class);
System.out.println("==========>main");
System.out.println(testConfig.getValue());
}
}
关键类
- AnnotationConfigApplicationContext
根据包扫描对象
记录扫描到的类的具体信息(描述类)
接口,可自定义参与类初始化过程逻辑
工厂钩子,允许自定义修改应用程序上下文的 bean 定义,调整上下文底层 bean 工厂的 bean 属性值。
后期处理器父类,有很多子类;不同子类提供了不同的实现方法,参与到bean初始化过程中
例:AutowiredAnnotationBeanPostProcessor
大体流程
scan -> beanPorcessor(描述bean信息) -> 放到 configMap 中 -> refresh -> 通过bean工厂实例化类 -> 放到单例池中
AnnotationConfigApplicationContext详解
- 类图
![类图](https://i-blog.csdnimg.cn/blog_migrate/b7aa72221dbf936c0961f9a57f9e6f8e.png#pic_center)
- 流程图
![执行流程](https://i-blog.csdnimg.cn/blog_migrate/217686d4ab40dda0ad71d58a6f5e9d3b.png#pic_center)