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

Spring IoC 入門第一例:從 XML 裝配到依賴注入的極簡實踐

     編輯:Java 綜合教學

Spring IoC 入門第一例:從 XML 裝配到依賴注入的極簡實踐

Spring 核心是 控制反轉:對象創建權從代碼移交給容器,依賴關係通過配置注入,實現解耦。

1. 領域類

package com.wangcf;
public class HelloWorld {
    private String name;
    public void sayHello() { System.out.println("Hello World " + name); }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
}

2. XML 裝配元數據

<?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 name="helloworld" class="com.wangcf.HelloWorld">
        <property name="name"><value>小明</value></property>
    </bean>
</beans>
  • <beans>:容器根元素,持有所有 Bean 定義。
  • <bean>:單個 Bean 定義,name/id 為唯一標識,class 為全限定類名。
  • <property>:Setter 注入,name 對應屬性名,<value> 為字面量值。

3. 測試類:啟動容器、獲取 Bean

package com.wangcf;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloTest {
    @Test
    public void testSayHello() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        HelloWorld hello = (HelloWorld) ctx.getBean("helloworld");
        hello.sayHello(); // 輸出: Hello World 小明
    }
}

核心流程圖解

  1. ClassPathXmlApplicationContext 掃描 classpath 下 beans.xml。
  2. 解析 <bean>,實例化 HelloWorld(反射調用無參構造器)。
  3. 調用 setName("小明") 完成屬性注入。
  4. 將 Bean 放入單例池 Map<String, Object> singletonObjects。
  5. getBean("helloworld") 從池中返回同一實例。

進階延伸

  • 構造器注入:<constructor-arg> 替代 <property>,構建不可變對象。
  • 自動裝配:autowire="byName/byType/constructor" 減少 XML 體積。
  • 注解驅動:@Component + @Autowired + <context:component-scan/> 徹底拋棄 XML。
  • Java Config:@Configuration + @Bean 類型安全配置。

這個「Hello World」雖簡單,卻蘊含 Spring 容器啟動、Bean 定義註冊、實例化、依賴注入、生命周期管理的完整鏈路。掌握它,就掌握了 Spring 的靈魂。

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