Bean属性设置过程
分类
Bean属性设置分为两大类,如下:
- 将外部配置文件中的值设置为属性值,常用@PropertySource和@Value组合;
- 将容器中其它bean注入,常用@Autowired或@Resouce注解;
处理器AutowiredAnnotationBeanPostProcessor
处理逻辑分为两大步,如下:
- 作为接口MergedBeanDefinitionPostProcessor,通过反射识别出bean中需要注入的属性和方法等,即被@Autowired和@Value等标注的;
- 作为接口InstantiationAwareBeanPostProcessor,实行属性赋值和bean注入逻辑;
注册时机
AbstractApplicationContext.refresh() -> registerBeanPostProcessors()
调用时机
AbstractApplicationContext.refresh() -> finishBeanFactoryInitialization() -> … -> AbstractAutowireCapableBeanFactory.doCreateBean()
参考: