第一個Spring程序(代碼篇)

前言

上一篇介紹了一些理解和概念,本篇結合代碼談談,本篇適合小白

代碼在 github 倉庫

IoC - 第一個 Spring 程序

先來個 Demo 感受一下,代碼是基於 Maven 構建的,如果不熟悉 maven 可以查看公衆號 JavaPub 目錄學習。

  • 創建項目

在 Idea 新建 Maven 項目,目錄結構如圖

  • 導入依賴 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>javapub.rodert</groupId>
    <artifactId>firstSpringProject</artifactId>
    <version>1.0-SNAPSHOT</version>


    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>

    </dependencies>
</project>
  • 在項目的 src 目錄下創建一個名爲 javapub.rodert 的包,然後在該包中創建一個名爲 PersonDao 的接口,並在接口中添加一個 add() 方法
package javapub.rodert;

/**
 * @author wangshiyu rodert
 * @date 2020/7/2 20:13
 * @description
 */
public interface PersonDao {
    public void add();
}
  • 創建接口實現類 PersonDaoImpl

javapub.rodert 包下創建 PersonDao 的實現類 PersonDaoImpl

package javapub.rodert;

/**
 * @author wangshiyu rodert
 * @date 2020/7/2 20:14
 * @description
 */
public class PersonDaoImpl implements PersonDao {
    public void add() {
        System.out.println("執行成功!!!");
    }
}
  • 創建 Spring 配置文件

Spring 配置文件是整合 Spring 的核心

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


    <bean id="personDao" class="javapub.rodert.PersonDaoImpl"/>

</beans>
  • 到現在一個 Spring 程序已經搭建完成,測試一下

新建測試類

package javapub.rodert;


import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author wangshiyu rodert
 * @date 2020/7/2 20:15
 * @description
 */
public class PersonDaoTest {

    @Test
    public void test1(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("ApplicationContext.xml");
        PersonDao personDao = (PersonDao) applicationContext.getBean("personDao");
        personDao.add();
    }

}

返回結果:

執行成功!!!

使用 JUnit 測試運行測試方法,運行成功。在程序執行時,對象的創建並不是通過 new 一個類完成的,而是通過 Spring 容器管理實現的。這就是 Spring IoC(控制反轉) 容器思想的工作機制。

Spring 依賴注入的三種方式

依賴注入(Dependency Injection,DI)和控制反轉含義相同,它們是從兩個角度描述的同一個概念。

當某個 Java 實例需要另一個 Java 實例時,傳統的方法是由調用者創建被調用者的實例(例如,使用 new 關鍵字獲得被調用者實例),而使用 Spring 框架後,被調用者的實例不再由調用者創建,而是由 Spring 容器創建,這稱爲控制反轉。

屬性 setter 注入

指 IoC 容器使用 setter 方法注入被依賴的實例。通過調用無參構造器或無參 static 工廠方法實例化 bean 後,調用該 bean 的 setter 方法,即可實現基於 setter 的 DI。

構造方法注入

指 IoC 容器使用構造方法注入被依賴的實例。基於構造器的 DI 通過調用帶參數的構造方法實現,每個參數代表一個依賴。

根據註解注入

@Autowired

聲明:參考來源互聯網,有任何爭議可以留言。站在前人的肩上,我們才能看的更遠。

本教程純手打,致力於最實用教程,希望多多轉發支持,對我真的很重要。
歡迎來我公衆號,希望可以結識你,更多原創PDF,微信搜索:JavaPub,回覆:【666】,也可以催更。

有任何問題都可以來談談 !

下篇SSM整合

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章