Spring源码解析-杂记

随时记录spring一些零碎的东西,随时更新!

Autowire

开启注入支持,配置:

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />

AutowiredAnnotationBeanPostProcessor处理器实现了MergedBeanDefinitionPostProcessor,源码在:

// AbstractAutowireCapableBeanFactory
protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[] args) {
    ....
    synchronized (mbd.postProcessingLock) {
        if (!mbd.postProcessed) {
            // 实例化后,属性填充和初始化前,可以改变bean定义
            applyMergedBeanDefinitionPostProcessors(mbd, beanType, beanName);
            mbd.postProcessed = true;
        }
    }
    ....
}   


protected void applyMergedBeanDefinitionPostProcessors(RootBeanDefinition mbd, Class beanType, String beanName)
        throws BeansException {

    try {
        // 应用merge处理器
        for (BeanPostProcessor bp : getBeanPostProcessors()) {
            if (bp instanceof MergedBeanDefinitionPostProcessor) {
                MergedBeanDefinitionPostProcessor bdp = (MergedBeanDefinitionPostProcessor) bp;
                bdp.postProcessMergedBeanDefinition(mbd, beanType, beanName);
            }
        }
    }
    catch (Exception ex) {
        throw new BeanCreationException(mbd.getResourceDescription(), beanName,
                "Post-processing failed of bean type [" + beanType + "] failed", ex);
    }
}

PostConstruct和PreDestroy

初始化 bean 和销毁前注解。开启注入支持,配置:

<bean class="org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor" />

CommonAnnotationBeanPostProcessor处理器实现了MergedBeanDefinitionPostProcessor。处理同上面Autowire。

参考

  1. http://blog.csdn.net/topwqp/article/details/8681497/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值