zoukankan      html  css  js  c++  java
  • Bean创建过程

    实例化(反射创建实例)
    初始化
    (
    给属性赋值:populateBean(beanName, mbd, instanceWrapper);
    如果实现了BeanNameAware接口:执行((BeanNameAware) bean).setBeanName(beanName);
    如果实现了BeanClassLoaderAware接口:执行((BeanClassLoaderAware) bean).setBeanClassLoader(bcl);
    如果实现了BeanFactoryAware接口:((BeanFactoryAware) bean).setBeanFactory(AbstractAutowireCapableBeanFactory.this);

    找到所有BeanPostProcessor,逐个执行processor.postProcessBeforeInitialization(result, beanName);
    wrappedBean = applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);
    processor.postProcessBeforeInitialization(result, beanName);

    如果实现了InitializingBean,执行((InitializingBean) bean).afterPropertiesSet();
    invokeInitMethods(beanName, wrappedBean, mbd);

    如果配置了init-method,执行配置的init-method
    invokeCustomInitMethod(beanName, bean, mbd);

    找到所有BeanPostProcessor,逐个执行processor.postProcessAfterInitialization(result, beanName);
    wrappedBean = applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
    processor.postProcessAfterInitialization(result, beanName);

    如果是单实例BEAN,添加到singletonObjects中
    if (newSingleton) {
    addSingleton(beanName, singletonObject);
    }

    如果是销毁Bean,调用destory-method配置的方法

    )

  • 相关阅读:
    debian安装jdk,batik
    Debian 安装 VMware
    [转贴]UNIX\LINUX系统开发-gcc参数详解
    Free mail server
    mysql 权限控制笔记
    Debian 4.0 编译内核 2.6.27.6
    backbone 学习之sync
    backbone 学习之extend以及总结
    backbone 学习之全部源码
    backbone 学习之Collection
  • 原文地址:https://www.cnblogs.com/dushenzi/p/13329685.html
Copyright © 2011-2022 走看看