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

Spring Bean 配置詳解:從 XML 到實例化的完整生命週期

     編輯:Java 相關知識

配置範例速覽

<bean id="TheAction"
      class="net.xiaxin.spring.qs.UpperAction"
      singleton="true"
      init-method="init"
      destroy-method="cleanup"
      depends-on="ActionManager">
    <property name="message"><value>HeLLo</value></property>
    <property name="desc"><null/></property>
    <property name="dataSource"><ref local="dataSource"/></property>
</bean>

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName"><value>java:comp/env/jdbc/sample</value></property>
</bean>

核心屬性深度解析

屬性作用關鍵點
idBeanFactory 中唯一標識getBean("id") 索引鍵
class實現類全限定名必須可實例化
singletontrue 單例(默認),false 原型單例:容器級緩存唯一實例;原型:每次獲取新建
init-method初始化回調方法實例化、屬性注入後調用,用於資源初始化
destroy-method銷毀回調方法容器關閉時調用,用於資源釋放(單例有效)
depends-on強制依賴其他 Bean 先初始化罕用,解決靜態變量初始化順序等 Bad Smell 場景

屬性注入細節

  • <value>:字面值,容器自動類型轉換(String → 基本類型、Date 等)
  • <null/>:顯式注入 null,區別於空字符串 <value></value>
  • <ref local/bean/parent>:引用容器內其他 Bean,local 利用 XML IDREF 校驗存在性

容器啟動與獲取 Bean

InputStream is = new FileInputStream("beans.xml");
XmlBeanFactory factory = new XmlBeanFactory(is); // 舊版 API,現推薦 ApplicationContext
Action action = (Action) factory.getBean("TheAction");
// 此時 action 已完成:實例化 → 屬性注入 → init-method

現代最佳實踐提示

  • 生產環境請使用 ApplicationContext(ClassPathXmlApplicationContext 等),功能更豐富(國際化、事件發布、資源加載、生命週期管理)。
  • Spring 3.0+ 推薦 @Component + @Autowired 註解配置,XML 僅用於基礎設施整合。
  • depends-on 能避免則避免,重構靜態依賴為更佳設計。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved