Spring 設定檔中的 Bean 之間存在「繼承」與「依賴」關係,注意:這是配置層面的關係,非 Java 類別的繼承與依賴。
abstract="true" 標記為抽象,容器不會實例化parent="父BeanId" 指定父 Bean<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。
abstract="true" 的父 Bean 僅作為模板,直接 getBean() 會拋 BeanIsAbstractExceptionabstract、autowireclass,讓子 Bean 指定自己的類別,共享屬性配置指定前置依賴:被依賴的 Bean 必須先於當前 Bean 實例化。
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 先初始化)
<bean id="first" class="...First" depends-on="third,second"/> <bean id="second" class="...Second"/> <bean id="third" class="...Third"/>
實例化順序:Third → Second → First