Spring-bean的生命周期

50 阅读1分钟

一、BeanDefinition

Spring容器在进行实例化时,会将xml配置的<bean>信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean。

<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl" lazy-init="true" />
<bean id="userService" class="com.itheima.service.UserServiceImpl" scope="singleton">
    <property name="userDao" ref="userDao"></property>
</bean>

列举几个BeanDefinition对象中包含的字段:

  • beanClassName:bean的类名
  • initMethodName:初始化方法名称
  • propertyValues:bean的属性值
  • scope:作用域
  • lazyInit:延迟初始化

二、bean的创建过程

1691327696896.jpg

  1. 通过BeanDefinition获取Bean的定义信息。
  2. 调用构造函数实例化Bean。
  3. Bean的依赖注入。
  4. 处理Aware接口(BeanNameAware、BeanFactoryAware、ApplicationContextAware)。
  5. Bean的后置处理器BeanPostProcessor-前置。
  6. 初始化方法(Init-method、initializingBean)。
  7. Bean的后置处理器BeanPostProcessor-后置。
  8. 销毁Bean。