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

Spring 四種依賴注入方式詳細解析 (XML 配置篇)

     編輯:Java 相關知識

Spring IOC 容器負責建立 Bean 並注入依賴,XML 配置下主要有四種注入方式:Setter 注入、建構子注入、靜態工廠方法注入、實例工廠方法注入。

1. Setter 注入 (最常用)

Bean 類提供 setter 方法,XML 用 <property name="prop" ref="beanName"/>。

<bean name="springAction" class="com.example.SpringAction">
    <property name="springDao" ref="springDao"/>
</bean>
<bean name="springDao" class="com.example.SpringDaoImpl"/>

2. 建構子注入

Bean 類提供帶參建構子,XML 用 <constructor-arg ref="..."/>。參數順序可用 index 或 type 明確指定。

<bean name="springAction" class="com.example.SpringAction">
    <constructor-arg index="0" ref="springDao"/>
    <constructor-arg index="1" ref="user"/>
</bean>

3. 靜態工廠方法注入

工廠類提供 static 方法回傳 Bean 實例。XML 指定 class 為工廠類,factory-method 為靜態方法名。

<bean name="staticFactoryDao" class="com.example.DaoFactory" factory-method="getStaticFactoryDaoImpl"/>
<bean name="springAction" class="com.example.SpringAction">
    <property name="staticFactoryDao" ref="staticFactoryDao"/>
</bean>

4. 實例工廠方法注入

工廠類提供非靜態方法。需先將工廠類本身定義為 Bean,再用 factory-bean + factory-method 取得實例。

<bean name="daoFactory" class="com.example.DaoFactory"/>
<bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"/>
<bean name="springAction" class="com.example.SpringAction">
    <property name="factoryDao" ref="factoryDao"/>
</bean>

補充:Bean 作用域

預設 singleton (單例)。需多例時加 scope="prototype":<bean ... scope="prototype">。

總結

  • Setter 注入最靈活、可讀性高,實務首選。
  • 建構子注入適合強制依賴、不可變物件。
  • 工廠方法注入用於整合舊有工廠模式或複雜建構邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved