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

Spring 進階:利用父子 Bean 實現公共屬性配置復用

     編輯:Java 綜合教學

Spring 進階:利用父子 Bean 實現公共屬性配置復用

在 Spring 專案中,當多個 Bean 共享相同配置屬性時,重複定義不僅冗餘還難以維護。本文通過實例演示如何使用 parent 屬性與抽象 Bean 實現配置復用。

場景還原:重複的屬性配置

假設有四個 Bean:Bean1 依賴 Bean2、Bean3、Bean4。其中 Bean2 和 Bean3 都擁有 id 和 name 兩個相同屬性:

<bean id="bean2" class="com.dwr.spring.bean.Bean2">
    <property name="id" value="1"/>
    <property name="name" value="Jack"/>
    <property name="password" value="123456"/>
</bean>

<bean id="bean3" class="com.dwr.spring.bean.Bean3">
    <property name="id" value="1"/>
    <property name="name" value="Jack"/>
</bean>

優化方案:抽象父 Bean

將公共屬性提取到一個抽象 Bean 中,子 Bean 通過 parent 屬性繼承:

<!-- 定義抽象父 Bean,abstract="true" 表示不會實例化 -->
<bean id="beanAbstract" abstract="true">
    <property name="id" value="1"/>
    <property name="name" value="Jack"/>
</bean>

<!-- 子 Bean 繼承父 Bean 配置 -->
<bean id="bean2" class="com.dwr.spring.bean.Bean2" parent="beanAbstract">
    <property name="password" value="123456"/>  <!-- 僅定義差異屬性 -->
</bean>

<bean id="bean3" class="com.dwr.spring.bean.Bean3" parent="beanAbstract"></bean>

關鍵點解析

  • abstract="true":標記為抽象 Bean,容器不會實例化它,僅作為配置模板
  • 可選 class 屬性:抽象 Bean 可不指定 class,子 Bean 必須指定
  • 屬性覆蓋:子 Bean 可重新聲明 property 覆蓋父 Bean 的值(如需不同的 name)

實戰優勢

  1. 消除重複:公共配置集中維護,修改一處生效多處
  2. 靈活擴展:子 Bean 保留自定義屬性的能力
  3. 結構清晰:配置文件層次分明,易於閱讀與管理

這種「模板模式」在 Spring XML 配置中極為實用,特別是大量相似 Bean(如多数據源、多服務客戶端)場景下,能顯著降低維護成本。

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