码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Bean生命周期

时间:2020-05-03 20:24:35      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:href   bean   初始化   code   用户   closed   接口   instance   protect   

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);
   }

   
   }
View Code

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

Spring Bean生命周期

标签:href   bean   初始化   code   用户   closed   接口   instance   protect   

原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/12802214.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!