spring中bean的生命周期

介绍

  Spring中Bean的生命周期,大概可以分为四个阶段和多个扩展点:

  1. 实例化
  2. 属性注入
  3. 初始化
  4. 销毁

生命周期

  生命周期的的主要过程都在doCreate()方法中,在其中顺序的调用实例化,属性赋值,初始化方法。

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

  销毁则在容器关闭时调用,详见ConfigurableApplicationContext#close()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 忽略了无关代码
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);
}
}

参考文献 & 鸣谢

  • 请别再问Spring Bean的生命周期了!