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

Spring IOC 容器中 Bean 的繼承與依賴關係詳解

     編輯:Java 綜合教學

Spring IOC 容器中 Bean 的繼承與依賴關係

Spring 設定檔中的 Bean 之間存在「繼承」與「依賴」關係,注意:這是配置層面的關係,非 Java 類別的繼承與依賴。

一、Bean 繼承關係

1. 基本語法

  • 父 Bean:可設定 abstract="true" 標記為抽象,容器不會實例化
  • 子 Bean:使用 parent="父BeanId" 指定父 Bean

2. 繼承範例

<bean id="employee" class="com.nucsoft.spring.bean.Employee"
      p:empName="emp01" p:age="23"/>
<bean id="employee2" class="com.nucsoft.spring.bean.Employee"
      p:empName="emp02" parent="employee"/>

employee2 繼承 age=23,覆寫 empName=emp02。

3. 關鍵規則

  1. 子 Bean 繼承父 Bean 的屬性配置,可覆寫
  2. abstract="true" 的父 Bean 僅作為模板,直接 getBean() 會拋 BeanIsAbstractException
  3. 不會被繼承的屬性:abstract、autowire
  4. 父 Bean 可省略 class,讓子 Bean 指定自己的類別,共享屬性配置

二、Bean 依賴關係

1. depends-on 屬性

指定前置依賴:被依賴的 Bean 必須先於當前 Bean 實例化。

2. 行為演示

public class First { public First() { System.out.println("First 實例化"); } }
public class Second { public Second() { System.out.println("Second 實例化"); } }

無 depends-on(按配置順序實例化):

<bean id="first" class="...First"/>
<bean id="second" class="...Second"/>

輸出:Second → First

加上 depends-on:

<bean id="first" class="...First" depends-on="second"/>
<bean id="second" class="...Second"/>

輸出:Second → First(強制 second 先初始化)

3. 多重依賴與順序

<bean id="first" class="...First" depends-on="third,second"/>
<bean id="second" class="...Second"/>
<bean id="third" class="...Third"/>

實例化順序:Third → Second → First

三、實務應用場景

  • Bean 繼承:減少重複配置,統一管理共同屬性(如資料源、交易管理器)
  • depends-on:確保啟動順序(如資料庫初始化 Bean 必須先於服務 Bean 啟動)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved