開啓 Spring 之旅:第一個 Spring 程序 ![Spring][Eclipse 使用 Spring][Eclipse 配置 Spring 約束文件][Eclipse 配置 xml 模版]

您的“關注”和“點贊”,是信任,是認可,是支持,是動力…

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

具體案例:演示 IoC 容器的使用

通過具體實例演示 IoC 容器的使用,步驟如下所示。
本文使用的開發工具爲:

Eclipse IDE for Enterprise Java Developers.

Version: 2018-12 (4.10.0)
Build id: 20181214-0600

第一步:創建工程項目

工程項目是基礎。在 Eclipse 中創建 Web 項目spring-demo

將 Spring 框架所需的 JAR 包複製到項目的 lib 目錄中,並將其添加到類路徑下(選中每個 jar 包 → 右鍵 → Build Path → Add to Build Path),添加後的項目如下圖所示:
在這裏插入圖片描述

第二步:創建實現類

創建交給 Spring 來實例化的實現類。通常先創建 Dao 接口,再創建 Dao 接口的實現類。

(1)先創建 Dao 接口

在項目的 src 目錄下創建一個名爲 com.manongajie.dao 的包,在該包中創建一個名爲 UserDao 的接口,並在接口中添加一個 add() 抽象方法,如下所示:

package com.manongajie.dao;

/**
 * Dao 接口(演示用)
 * 
 * @author manongajie
 *
 */
public interface UserDao {

	public void add();
}

(2)創建 Dao 接口的實現類 UserDaoImpl

com.manongajie.ioc 包下創建 UserDao的實現類 UserDaoImpl,代碼如下所示:

package com.manongajie.ioc;

import com.manongajie.dao.UserDao;

public class UserDaoImpl implements UserDao {

	@Override
	public void add() {
		// TODO Auto-generated method stub
		System.out.println("添加了一個 user 。");
	}

}

第三步:創建 Spring 配置文件

1 配置 Spring 約束

1.1 Spring 約束概述

Spring 本身是基於 xml 配置來工作的,在使用 Spring 的過程中不可避免的要編寫大量 xml 配置,Spring 官方提供了這些 xml 文件的編寫規範,這是通過提供 xml 的約束文件來實現的。

簡單理解, xml 的約束其實是一種限定 xml 文件寫法的技術,主要分爲兩種:

  • DTD,通常文件的後綴.dtd
  • Schema,通常文件的後綴爲.xsd

Spring 提供了 Schema 格式的約束,來限定 Spring 配置文件的寫法。

1.2 將 Spring 的約束文件交給 Eclipse 管理

開發者可以通過閱讀 Spring 提供的約束文件來了解 Sprinig 的 xml 配置的寫法。

但是,這麼整的話會很麻煩,所以,通常我們會將約束文件交給開發工具管理(本文用的是 Eclipse),開發工具可以通過解析約束文件瞭解 xml 的寫法,並在需要時爲開發者提供標籤提示。

如何將 Spring 的約束文件(這裏只整 Spring beans 的約束文件)交給 Eclipse 來管理呢?

請參見以下步驟,

(1)找到 Spring 的約束文件,路徑爲:\spring-5.2.6.RELEASE-dist\spring-framework-5.2.6.RELEASE\schema\beans。一步步打開存放 Spring 框架的目錄spring-framework-5.2.6.RELEASE,如下圖所示:

在這裏插入圖片描述
打開此目錄,如下圖所示:

在這裏插入圖片描述
再打開schema目錄,如下圖所示:

在這裏插入圖片描述
再打開beans目錄,就找到 Spring beans 約束文件了。如下圖所示:

在這裏插入圖片描述
(2)打開 Eclipse 的 /Window/Preferences ,配置其中的XML Catalog,如下圖所示:

在這裏插入圖片描述
找到上圖中的 ③ 按鈕“Add”,點擊在新彈出的選項卡中導入上一步找到的spring-beans.xsd文件,並設置好名稱空間,通常是在自動識別的名稱空間之後再加上/文件名/spring-beans.xsd),點擊OK即可。如下圖所示:

在這裏插入圖片描述

2 配置 xml 模版,用來快速生成 xml 文件

xml 文件模版代碼,可以去官網獲取,不同版本的 Spring 框架,配置文件頭約束的寫法是不同的,建議去官網獲取。如下所示(spring 5.2.6 版本):

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
	<!-- 第2行 xmlns="http://www.springframework.org/schema/beans" 表示默認命名空間,定義 spring 的 bean 的基本信息,爲固定格式。有它,就可以配置 <bean> 標籤了。 -->
	<!-- 第3行 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"表示使用 xml 的標準是 w3 的 XMLSchema-instance 版本爲 2001 ,爲固定格式。-->
	<!-- 第4行和第5行 xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd",內容是動態的,需要根據項目需要配置,如何配置 請參見本文 第三步第1小節。 -->
    <bean id="..." class="...">  
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>

由於 Eclipse 不會自動生成如上所示的 xml 文件(至少本人所安裝的 Eclipse 沒有自動生成),需要手動敲寫代碼,可以看出來,一般人真記不住,得複製粘貼,比較麻煩。經常要用到的話,還是配置一個 xml 模版比較好,可以快速生成 所需的 xml 文件。

配置 xml 模版步驟如下所示:

(1)在 Eclipse 中的/Window/Preferences中配置新模版,如下圖所示:

在這裏插入圖片描述
(2)點擊New 按鈕,進入到New Template選項框中,進行設置模版,全部搞定之後,點擊OK即可。如下圖所示:

在這裏插入圖片描述

3 創建 Spring 配置文件(使用 xml 模版)和編寫配置文件內容

3.1 創建 Spring 配置文件(使用 xml 模版)

src 目錄下創建 Spring 的核心配置文件 applicationContext.xml(這個 xml 文件名是可以自定義的),如下圖所示:

在這裏插入圖片描述
選中我們提前創建好的模版,確定之後,如下圖所示:

在這裏插入圖片描述

3.2 編寫配置文件內容

applicationContext.xml配置文件創建好之後,就可以寫配置了,如下代碼所示:

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
	<!-- 第2行 xmlns="http://www.springframework.org/schema/beans" 表示默認命名空間,定義 spring 的 bean 的基本信息,爲固定格式。有它,就可以配置 <bean> 標籤了。 -->
	<!-- 第3行 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"表示使用 xml 的標準是 w3 的 XMLSchema-instance 版本爲 2001 ,爲固定格式。-->
	<!-- 第4行和第5行 xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd",內容是動態的,需要根據項目需要配置,如何配置 請參見本文 第三步第1小節。 -->
    <!-- 由 Spring 容器創建該類的實例對象:bean spring 管理的類都稱爲 bean
    	id 表示文件的唯一標識,不能重複,“駝峯命名法”首字母小寫;
    	class 表示指定需要實例化的 Bean 的全限定類名(包名+類名)。 -->
    	
	<bean id="userDaoImpl" class="com.manongajie.ioc.UserDaoImpl"></bean>
	
	<!-- 還可以設置別名標籤:通過 IoC 容器獲取 userDao 實例。applicationContext.getBean("user") -->
	<alias name="userDaoImpl" alias="user"></alias>
	
</beans>

第四步:編寫測試類

com.manongajie.test 包下創建測試類 SpringTest1,並在該類中添加一個名爲 test1() 的方法,代碼如下所示:

package com.manongajie.test;

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

import com.manongajie.dao.UserDao;

public class SpringTest1 {
	@Test
	public void test1() {
		
		// 定義Spring配置文件的路徑
		String xmlPath = "applicationContext.xml";
		
		// 初始化 Spring 容器,加載配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
		
		// 通過 IoC 容器獲取 userDao 實例。applicationContext.getBean(id)
		//UserDao userDaoImpl = (UserDao) applicationContext.getBean("userDaoImpl");
		
		// 通過 IoC 容器獲取 userDao 實例。applicationContext.getBean(全限定類名.class)	
		UserDao userDaoImpl = (UserDao) applicationContext.getBean(com.manongajie.ioc.UserDaoImpl.class);
		
		// 別名標籤:通過 IoC 容器獲取 userDao 實例。applicationContext.getBean("user")		
//		UserDao userDaoImpl = (UserDao) applicationContext.getBean("user");

		// 調用 UserDao 的 add() 方法
		userDaoImpl.add();
	}
}


運行結果(使用 JUnit 測試運行 test1() 方法,運行成功後,控制檯的輸出結果):

添加了一個 user 。

由以上代碼可以看出,在程序執行時,對象的創建並不是通過 new 一個類完成的,而是由 Spring 容器管理實現的。這就是 Spring IoC 容器思想的工作機制。

【文章其他地址】

微信公衆號:碼農阿杰

博客園

【參考資料】

spring

Artifact Repository Browser

Apache Commons

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