首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Bean 定義與生命周期完整指南

     編輯:Java 相關知識

什麼是 Bean?

構成 Spring 應用主幹的對象,由 Spring IoC 容器實例化、組裝並管理完整生命周期。這些對象稱為 Bean。

Bean 定義包含的元數據

  1. 如何創建 Bean(構造器、工廠方法等)
  2. Bean 生命周期詳情(初始化/銷毀回調)
  3. Bean 依賴關係(注入其他 Bean)

三種配置元數據方式

  • 基於 XML 的配置文件
  • 基於註解的配置(@Component, @Autowired 等)
  • 基於 Java 代碼的配置(@Configuration, @Bean)

XML 配置範例

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <!-- 簡單 Bean -->
    <bean id="simpleBean" class="com.example.SimpleBean"/>

    <!-- 延遲初始化 -->
    <bean id="lazyBean" class="com.example.LazyBean" lazy-init="true"/>

    <!-- 指定初始化方法 -->
    <bean id="initBean" class="com.example.InitBean" init-method="init"/>

    <!-- 指定銷毀方法 -->
    <bean id="destroyBean" class="com.example.DestroyBean" destroy-method="cleanup"/>

</beans>

Bean 生命周期回調機制

初始化回調

兩種方式:

  1. 實現 InitializingBean 接口,重寫 afterPropertiesSet()。
  2. 在 XML 中指定 init-method 屬性,指向任意無參方法(如 init())。
public class ExampleBean implements InitializingBean {
    public void afterPropertiesSet() {
        // 初始化邏輯
    }
}
// 或 XML: <bean id="exampleBean" class="examples.ExampleBean" init-method="init"/>

銷毀回調

兩種方式:

  1. 實現 DisposableBean 接口,重寫 destroy()。
  2. 在 XML 中指定 destroy-method 屬性。
public class ExampleBean implements DisposableBean {
    public void destroy() {
        // 清理資源
    }
}
// 或 XML: <bean id="exampleBean" class="examples.ExampleBean" destroy-method="destroy"/>

非 Web 環境下的優雅關閉

在桌面應用中,註冊 JVM 關閉鉤子:

ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
context.registerShutdownHook(); // 確保單例 Bean 的 destroy 方法被調用

建議

優先使用 XML 的 init-method/destroy-method 或註解 @PostConstruct/@PreDestroy,避免耦合 Spring 接口(InitializingBean/DisposableBean)。

總結

掌握 Bean 定義元數據與生命周期回調,是精通 Spring IoC 容器管理的關鍵基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved