每日一问:Spring Bean的生命周期

在 Spring 框架中,Bean 的生命周期包括从创建到销毁的多个阶段。了解这些阶段有助于开发人员有效地管理和定制 Bean 的行为。以下是 Spring Bean 的生命周期的详细步骤:

1. 实例化(Instantiation)

在这个阶段,Spring 容器根据配置文件或注解扫描创建 Bean 的实例。这是通过调用类的构造器来完成的。

2. 属性注入(Dependency Injection / Population of Properties)

实例化之后,Spring 容器会为 Bean 设置属性,并进行依赖注入。属性值可以来自配置文件中的 <property> 元素或使用注解(如 @Autowired)实现自动装配。

3. 设置 Bean 名称(Set Bean Name)

如果 Bean 实现了 BeanNameAware 接口,Spring 将调用其 setBeanName() 方法,将容器中定义的 Bean 名称传递给该方法。

4. 设置 Bean 工厂(Set Bean Factory)

如果 Bean 实现了 BeanFactoryAware 接口,Spring 将调用其 setBeanFactory() 方法,并将 BeanFactory 容器的实例传递给该方法。这使得 Bean 可以访问容器的功能。

5. 设置应用上下文(Set Application Context)

如果 Bean 实现了 ApplicationContextAware 接口,Spring 会调用其 setApplicationContext() 方法,将 ApplicationContext 的引用传递给 Bean。这使得 Bean 可以与 Spring 的上下文进行交互。

6. Bean 初始化(Post-Initialization)

  • BeanPostProcessor 接口:如果容器中存在实现了 BeanPostProcessor 接口的类,它们会在 Bean 初始化之前和之后分别调用 postProcessBeforeInitialization() 和 postProcessAfterInitialization() 方法。这些方法用于在初始化之前和之后进行自定义的 Bean 修改。

  • 初始化回调

    • 如果 Bean 实现了 InitializingBean 接口,Spring 将调用其 afterPropertiesSet() 方法。
    • 如果在配置中使用了 init-method 属性,Spring 将调用指定的初始化方法。

7. Bean 准备就绪(Ready for Use)

此时,Bean 已经完全初始化,并且可以被应用程序使用。

8. Bean 销毁(Destruction)

  • DisposableBean 接口:如果 Bean 实现了 DisposableBean 接口,Spring 将在容器关闭时调用其 destroy()方法。

  • 销毁回调

    • 如果在配置中使用了 destroy-method 属性,Spring 将调用指定的销毁方法。
  • BeanPostProcessor 接口:实现了 DestructionAwareBeanPostProcessor 接口的类可以在销毁之前对 Bean 进行进一步的操作。

9. Bean 被垃圾回收(Garbage Collection)

一旦 Spring 容器销毁了 Bean,Bean 对象将失去对资源的引用,之后会由 Java 的垃圾回收机制(Garbage Collector)回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值