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

Spring 基礎核心:Bean 定義、依賴注入、自動裝配與集合注入全面詳解

     編輯:Java 綜合教學

Spring 基礎核心:Bean 定義、依賴注入、自動裝配與集合注入全面詳解

Bean 是 Spring 容器管理的核心對象。本文系統整理 Bean 生命週期、依賴配置三種模式、五種自動裝配策略、依賴檢查機制、集合注入語法,以及三種容器獲取 Bean 的方式,構建完整的 Spring Bean 知識體系。

一、 Bean 生命週期:定義 → 初始化 → 使用 → 銷毀

階段配置方式說明
初始化 init-method="init" XML 指定初始化方法名
實現 InitializingBean 重寫 afterPropertiesSet(),耦合 Spring API
使用(三種獲取方式) BeanWrapper 底層屬性操作工具,直接操作對象屬性
BeanFactory 基礎容器,XmlBeanFactory 已棄用,歷史遺留
ApplicationContext 高級容器,企業級開發標準,支援國際化、事件、資源加載
銷毀 destroy-method="cleanup" XML 指定銷毀方法
實現 DisposableBean 重寫 destroy(),耦合 Spring API

最佳實踐:優先使用 @PostConstruct/@PreDestroy(JSR-250)或 init-method/destroy-method,避免實現 Spring 接口造成耦合。

二、 ref 依賴引用的三種模式

<property name="target">
  <ref local="beanId"/>   <!-- 同一 XML 文件,編譯期校驗 ID 存在性 -->
  <ref bean="beanId"/>    <!-- 跨文件引用,運行期校驗 -->
  <ref parent="beanId"/>  <!-- 父容器 Bean,層級容器場景 -->
</property>

三、 五種自動裝配模式(autowire)

模式匹配規則適用場景
byName屬性名 = Bean ID命名規範專案
byType屬性類型 = Bean 類型(唯一)單一實現類
constructor構造器參數類型匹配不可變對象、強依賴
autodetect有構造器用 constructor,否則 byType兼容舊版本
no (默認)手動配置 <property>/<constructor-arg>精確控制、生產環境推薦

注意:自動裝配無法處理簡單類型、集合、多候選 Bean 歧義;生產環境建議顯式配置。

四、 依賴檢查(dependency-check)

配合 autowire 使用,容器啟動時驗證依賴滿足情況:

模式檢查範圍
simple基本類型、String 等非引用類型
object引用類型依賴
allsimple + object
none (默認)不檢查

五、 集合注入完整語法

<!-- List -->
<property name="listProp">
  <list>
    <value>item1</value>
    <value>item2</value>
    <ref bean="someBean"/>
  </list>
</property>

<!-- Set -->
<property name="setProp">
  <set>
    <value>item1</value>
    <ref bean="otherBean"/>
  </set>
</property>

<!-- Map -->
<property name="mapProp">
  <map>
    <entry key="key1" value="value1"/>
    <entry key="key2" value-ref="someBean"/>
  </map>
</property>

<!-- Properties -->
<property name="propsProp">
  <props>
    <prop key="key1">value1</prop>
    <prop key="key2">value2</prop>
  </props>
</property>

關鍵點:value-ref 引用 Bean,value 字面值;entry 支援 key-ref 引用 Bean 作為鍵。

六、 容器管理 Bean 的三種方式對比

容器類型特點典型用法
BeanWrapper非容器,屬性訪問器框架內部、數據綁定
BeanFactory延遲加載,基礎 DI資源受限環境、測試
ApplicationContext啟動即加載單例,企業級功能全Web 應用、生產環境標準

七、 完整 Bean 配置模板

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
  "https://www.springframework.org/dtd/spring-beans.dtd">
<beans>
  <bean id="exampleBean" class="com.example.ExampleBean"
        init-method="init" destroy-method="cleanup"
        autowire="byName" dependency-check="objects">
    
    <!-- 簡單屬性 -->
    <property name="name" value="example"/>
    <property name="count" value="10"/>
    
    <!-- 引用依賴 -->
    <property name="service" ref="myService"/>
    
    <!-- 集合注入 -->
    <property name="tags">
      <list>
        <value>tag1</value>
        <value>tag2</value>
      </list>
    </property>
  </bean>
</beans>

核心總結

  • Bean 定義元數據:類、作用域、生命週期、依賴、屬性
  • 依賴注入兩大方式:Setter 注入(<property>)+ 構造器注入(<constructor-arg>)
  • 自動裝配便利但犧牲明確性,生產環境慎用
  • 集合注入支援 List/Set/Map/Properties 任意嵌套
  • ApplicationContext 是企業級開發標準容器
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved