zoukankan      html  css  js  c++  java
  • Spring Bean生命周期

    Spring Bean生命周期:

    1. 实例化 Instantiation
    2. 属性赋值 Populate
    3. 初始化 Initialization
    4. 销毁 Destruction

    实例化 -> 属性赋值 -> 初始化 -> 销毁

      实例化属性赋值 对应构造方法setter方法的注入,

      初始化销毁 是用户能自定义扩展的两个阶段。

    主要逻辑都在doCreate()方法中,逻辑很清晰,就是顺序调用以下三个方法,这三个方法与三个生命周期阶段一一对应,非常重要,在后续扩展接口分析中也会涉及。

    1. createBeanInstance() -> 实例化
    2. populateBean() -> 属性赋值
    3. initializeBean() -> 初始化

    源码如下,能证明实例化,属性赋值和初始化这三个生命周期的存在。

    // 忽略了无关代码
    protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final @Nullable Object[] args)
          throws BeanCreationException {
    
       // Instantiate the bean.
       BeanWrapper instanceWrapper = null;
       if (instanceWrapper == null) {
           // 实例化阶段!
          instanceWrapper = createBeanInstance(beanName, mbd, args);
       }
    
       // Initialize the bean instance.
       Object exposedObject = bean;
       try {
           // 属性赋值阶段!
          populateBean(beanName, mbd, instanceWrapper);
           // 初始化阶段!
          exposedObject = initializeBean(beanName, exposedObject, mbd);
       }
       }

    原文:https://www.jianshu.com/p/1dec08d290c1

  • 相关阅读:
    LCA算法
    poj1364(差分约束系统)
    dij算法为什么不能处理负权,以及dij算法变种
    差分约束系统
    最短路专辑
    LightOJ1348 树链剖分
    FZU2082树链剖分
    HYSBZ1036 树链剖分
    poj3237 树链剖分 暴力
    poj2763 树链剖分(线段树)
  • 原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/12802214.html
Copyright © 2011-2022 走看看