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

Spring IoC 入門:控制反轉與依賴注入核心機制詳解

     編輯:Java 綜合教學

Spring IoC 容器:從 XML 配置到依賴注入實戰

Spring 框架的兩大支柱——IoC(控制反轉)與 AOP(面向切面編程),其中 IoC 通過 spring-core 與 spring-context 實現。本文以 XML 配置為切入點,構建核心概念認知。

Spring 框架架構圖
Spring 框架模組架構概覽

核心概念:IoC 與 DI 的本質

控制反轉(IoC)即依賴注入(DI):對象依賴的創建與獲取控制權從對象自身轉移至容器。以「汽車加油」為喻:

  • 汽車(服務類)需要燃油(依賴)才能運行
  • 傳統模式:汽車自行開採燃油(new Dependency(),強耦合)
  • IoC 模式:汽車只負責行駛,燃油由加油站(IoC 容器)注入(解耦)

可被容器管理注入的對象稱為 Bean,容器負責其實例化、配置、裝配及生命週期管理。

Bean 定義與容器啟動

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://www.springframework.org/schema/beans 
       https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="petStore" class="com.example.PetStoreService">
        <property name="accountDAO" ref="accountDAO"/>
        <property name="itemDAO" ref="itemDAO"/>
    </bean>
</beans>
// 容器啟動:加載多個配置文件
ApplicationContext context = new ClassPathXmlApplicationContext(
    new String[] {"services.xml", "daos.xml"});

// 獲取 Bean 並使用
PetStoreService service = context.getBean("petStore", PetStoreService.class);
List<String> users = service.getUsernameList();

實戰案例:分層架構依賴裝配

services.xml 定義服務層 Bean 及其依賴引用:

<bean id="petStore" class="com.example.service.PetStoreService">
    <property name="accountDAO" ref="accountDAO"/>
    <property name="itemDAO" ref="itemDAO"/>
</bean>

daos.xml 定義數據訪問層實現:

<bean id="accountDAO" class="com.example.dao.AccountDAO"/>
<bean id="itemDAO" class="com.example.dao.ItemDAO"/>

Java 類結構需包含對應的 setter 方法:

public class PetStoreService {
    private AccountDAO accountDAO;
    private ItemDAO itemDAO;
    // 必須提供 setter
    public void setAccountDAO(AccountDAO accountDAO) { this.accountDAO = accountDAO; }
    public void setItemDAO(ItemDAO itemDAO) { this.itemDAO = itemDAO; }
}
Spring IoC 運行效果圖
容器成功注入依賴並輸出結果

遷移建議

雖然 XML 配置利於理解原理,但現代開發推薦:

  • 注解驅動:@Component、@Autowired 簡化配置
  • Spring Boot:自動配置進一步降低樣板代碼
  • Java Config:@Configuration + @Bean 類型安全重構

掌握 XML 配置本質是為了更好理解注解背後的機制。實際項目中請根據團隊規範選擇適配方式。

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