Spring源码(二):深入BeanPostProcessor源码—2

      上一篇文章讲了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提供的功能在这里没有讲。。。。。

           Spring源码——深入BeanPostProcessor源码—1

           编译好的Spring源码


版权声明:本文为qq_25432245原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。