上一篇文章讲了BeanPostProcessor对象的扫描、实例化、注册、调用以及BeanPostProcessor的使用场景。那么这篇文章主要讲的是BeanPostProcessor子类的使用场景。
1.查看构造器上是否有@Autowired注解:主要确定bean对象实例化构造方法。
类型:SmartInstantiationAwareBeanPostProcessor
处理类:AutowiredAnnotationBeanPostProcessor
方法:determineCandidateConstructors
入口——具体实现:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
2.扫描类的属性、方法上是否@PostConstruct@PreDestroy @Resource@Autowired @Value注解:主要完成Bean对象的依赖注入的扫描工作。
类型:MergedBeanDefinitionPostProcessor
处理类:CommonAnnotationBeanPostProcessor、 AutowiredAnnotationBeanPostProcessor
方法:postProcessMergedBeanDefinition
入口——具体实现:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
3.是否允许依赖注入。
类型:InstantiationAwareBeanPostProcessor
处理类:All 所有的类型
方法:postProcessAfterInstantiation
入口——具体实现
![]() |
![]() |
4.对类的方法、属性上有@Autowired @Value注解的支持:主要完成Bean对象的依赖注入。
类型:InstantiationAwareBeanPostProcessor
处理类:AutowiredAnnotationBeanPostProcessor、
方法:postProcessPropertyValues
入口——具体实现:
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
5.提前暴露bean对象,放入三级缓存,bean对象是否需要创建代理对象。
类型:SmartInstantiationAwareBeanPostProcessor
处理类:AbstractAutoProxyCreator
方法:getEarlyBeanReference
入口——具体实现:
![]() |
![]() |
![]() |
![]() |
注意:springBoot提供的功能在这里没有讲。。。。。

























