構成 Spring 應用主幹的對象,由 Spring IoC 容器實例化、組裝並管理完整生命周期。這些對象稱為 Bean。
<?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>
兩種方式:
InitializingBean 接口,重寫 afterPropertiesSet()。init-method 屬性,指向任意無參方法(如 init())。public class ExampleBean implements InitializingBean {
public void afterPropertiesSet() {
// 初始化邏輯
}
}
// 或 XML: <bean id="exampleBean" class="examples.ExampleBean" init-method="init"/>
兩種方式:
DisposableBean 接口,重寫 destroy()。destroy-method 屬性。public class ExampleBean implements DisposableBean {
public void destroy() {
// 清理資源
}
}
// 或 XML: <bean id="exampleBean" class="examples.ExampleBean" destroy-method="destroy"/>
在桌面應用中,註冊 JVM 關閉鉤子:
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
context.registerShutdownHook(); // 確保單例 Bean 的 destroy 方法被調用
優先使用 XML 的 init-method/destroy-method 或註解 @PostConstruct/@PreDestroy,避免耦合 Spring 接口(InitializingBean/DisposableBean)。
掌握 Bean 定義元數據與生命周期回調,是精通 Spring IoC 容器管理的關鍵基石。