getBean方法(三)

上次主要看了  doCreateBean方法中的  instanceWrapper = createBeanInstance(beanName, mbd, args);这个方法, 接下来这样分析的是 doCreateBean方法的接下来的方法.
    
applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName);
                    //CommonAnnotationBeanPostProcessor  支持了@PostConstruct,@PreDestroy,@Resource注解
                    //AutowiredAnnotationBeanPostProcessor 支持 @Autowired,@Value注解
                    //BeanPostProcessor接口的典型运用,这里要理解这个接口
                    //对类中注解的装配过程
                    /**
                     * 实例化完成后接下来就需要对类中的属性进行依赖注入操作,
                     * 但是类里面属性和方法的依赖注入往往用@Autowired 或者@Resource 注解,
                     * 那么这些注解的依赖注入是如何完成的呢?
                     * 核心方法为 applyMergedBeanDefinitionPostProcessors 也是通过 BeanPostProcessor 接口类型实例来挨个处理的。
                     *
                     * BeanPostProcessor 接口
                     *      (2)收集@Resource @Autowired @Value @PostConstruct,@PreDestroy 注解的方法和属性埋点
                     *         过滤的接口类型是:MergedBeanDefinitionPostProcessor
                     *         调用的方法是:postProcessMergedBeanDefinition
                     */
 
 
使用 MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition方法,对 MergedBeanDefinition 类型的bean进行后置处理
 
暴露缓存解决循环依赖问题
 
 
 
 
populateBean方法
 
 
 
initializeBean方法
 
 
 
 
 
 
回到主方法干applyBeanPostProcessorsBeforeInitialization
 
ApplicationContextAwareProcessor的实现类的调用,   调用所有 BeanPostProcessors 的 postProcessBeforeInitialization 方法
 
 
 
在看看主方法中的  invokeCustomInitMethod 方法
 
 
      /**
         * afterPropertiesSet 和 Init-method 和有@PostConstruct 注解的方法其实核心功能都是一样的,
         * 只是调用 时序不一样而已,都是在该类实例化和 IOC 做完后调用的,
         * 我们可以在这些方法中做一些在 spring 或者 servlet 容器启动的时候的初始化工作。
         * 比如缓存预热,比如缓存数据加载到内存,比如配置解析,等等初始化工作调用顺
         * 序为先调用@PostConstruct(注解使用)、然后是 afterPropertiesSet、InitMethod(xml 配置)方法。
         */
 
回到主方法 applyBeanPostProcessorsAfterInitialization
 
 
 
在看看最后bean销毁时执行的方法调用registerDisposableBeanIfNecessary
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值