Bean属性设置过程

分类

Bean属性设置分为两大类,如下:

  1. 将外部配置文件中的值设置为属性值,常用@PropertySource和@Value组合;
  2. 将容器中其它bean注入,常用@Autowired或@Resouce注解;

处理器AutowiredAnnotationBeanPostProcessor

处理逻辑分为两大步,如下:

  1. 作为接口MergedBeanDefinitionPostProcessor,通过反射识别出bean中需要注入的属性和方法等,即被@Autowired和@Value等标注的;
  2. 作为接口InstantiationAwareBeanPostProcessor,实行属性赋值和bean注入逻辑;

注册时机

  AbstractApplicationContext.refresh() -> registerBeanPostProcessors()

调用时机

  AbstractApplicationContext.refresh() -> finishBeanFactoryInitialization() -> … -> AbstractAutowireCapableBeanFactory.doCreateBean()
Bean属性设置过程
参考:

  1. http://www.shangyang.me/2017/04/05/spring-core-container-sourcecode-analysis-annotation-autowired/