1. 程式人生 > >Spring 簡述以及在 Eclipse 下建立一個 Spring 的 Java 專案

Spring 簡述以及在 Eclipse 下建立一個 Spring 的 Java 專案

原創文章,轉載請註明出處。

Spring 是一個開源的輕量級的 Java 框架,該框架的核心功能有 2 個:

(1)Spring 容器作為超級大工廠,負責建立、管理所有 Java 物件,這些 Java 物件被稱為 Bean;

(2)Spring 容器管理容器中 Bean 之間的依賴關係,Spring 使用一種 “依賴注入” 的方式來管理 Bean 之間的關係。

對於開發者來說,使用 Spring 框架主要是做兩件事:①開發 Bean;②配置 Bean。

對於 Spring 框架來說,它要做的就是根據配置檔案來建立 Bean 例項,並呼叫 Bean 例項的方法完成“依賴注入(DI)”,這也是所謂 “控制反轉(IoC)”

的本質。

Spring 不提供某種功能,它只是將所有元件部署到 Spring 中,管理、維護、執行它們。Spring 使用基本的 JavaBean 來替代 EJB,它通過 <bean> 配置來例項化 Bean,設定 Bean 的屬性,以及設定 Bean 間相互的依賴性。一個 <bean> 通常需要定義 id 與 class 屬性。class 屬性肯定是必須的。如果配置檔案中配置的其他 Bean 中引用了該 Bean,則 id 屬性是必須的。Bean 則通過 id 屬性相互訪問。

下面我們將使用 Eclipse 建立一個簡單的 Spring 的 Java 專案。不過在這之前我們得做一些準備工作,比如從官網或其他途徑下載較新版本的 Spring 依賴包。從官網下載這個 Spring 依賴包的過程十分曲折。下面將演示一下在官網如何進行下載。已經下載過 spring-framework 和 commons-logging 的可直接跳過這一部分。

------------------------------------------------------------------------------------------------------------------------------------------------------------

1、開啟瀏覽器,百度或谷歌搜尋 “Spring framework”,在搜尋出的頁面上點選 “Spring Framework” 進入官網。


2、進入官網後,在頁面右側可以看到最近一些版本的 Spring Framework,任意點選一個版本之後的 “Reference”。筆者選擇的 4.3.7 版本的。


3、進入 “reference” 頁面後,找到 “Distribution Zip Files” 的字樣,其實它是個超連結。建議使用 “Ctrl + F” 開啟查詢框,輸入 “Distribution Zip Files” 在頁面進行查詢。


4、點選上圖的 “Distribution Zip Files”,連結到如下的位置,這裡可以看到給出了下載的地址。為了方便這裡直接給出:各版本的下載地址


5、點選上面的地址,可以連結到一個頁面,該頁面上包含了所有各個版本的 Spring Framework,選擇自己想要的版本點選去,比如筆者選擇的是 4.3.7 版本。


6、這回就可以真正跳轉到下載的頁面的,點選第一個壓縮包即可。


7、下載完成後對壓縮包進行解壓,不需要安裝。然後在根目錄下的 “libs” 資料夾下就可以找到許多 Spring 的依賴包了。


8、下載完 Spring 的依賴包後,我們還需要額外下載多一個包,Spring 的依賴包中不包含這個包。commons-logging 的包用於記錄和管理執行時的日誌資訊,我們可以從 Apache Commons Logging 找到我們需要的包進行下載。這裡下載的是 commons-logging-1.2。


至此,我們就下載好了所有的依賴包,也就完成了準備工作。

------------------------------------------------------------------------------------------------------------------------------------------------------------

接下來我們將正式開始建立 Spring 專案。

1、首先一個 Java 專案,專案名命名為 “SpringStudy”。然後在專案資料夾下新建一個 “lib” 資料夾,將幾個 Spring 常用的依賴包和 commons-logging-1.2 的包拷貝到該資料夾下面。並且


2、然後在專案名上右鍵 Build path > Configure Build Path,在 libiraries 檢視下點選 add JARs,在彈出的視窗中選擇剛才拷貝進 lib 資料夾下的依賴包。然後依次點選 “OK” > "Apply" > "OK",就可以把這些依賴的包新增進來了。


3、在專案資料夾的 src 資料夾下新建一個 interface 檔案,用來宣告一個介面,給其他類來實現這個介面及其中的抽象方法。報名命名為 “com.springstudy.spring”,介面檔名命名為 “HelloWorld”。這個介面中聲明瞭一個 sayHello() 的方法。

package com.springstudy.spring;

public interface HelloWorld {
	public String sayHello();
}
4、在上面建立的包下,新建一個 class 檔案,命名為 “HelloChinaImpl”,用來實現上面定義的 HelloWorld 介面,並且實現該介面的 sayHello() 方法。在這裡我們想要做的是輸出 “Hello China!” 。
package com.springstudy.spring;

public class HelloChinaImpl implements HelloWorld {

	@Override
	public String sayHello() {
		String str = "Hello China!";
		return str;
	}

}
5、同樣在那個包下,新建一個class 檔案,命名為 “HelloUSAImpl”,用來實現上面定義的 HelloWorld 介面,並且實現該介面的 sayHello() 介面。在這裡我們想要做的是輸出 “Hello USA!” 。
package com.springstudy.spring;

public class HelloUSAImpl implements HelloWorld {

	@Override
	public String sayHello() {
		String str = "Hello USA!";
		return str;
	}

}
6、接著新建一個 “Person” 類,用來完成說話的動作。也就是人根據所在的“位置”,比如“人在中國”或者“人在美國”,從而相應地輸出 “Hello China!” 和 “Hello USA!”。而這個“位置”,則是由配置檔案中來配置和決定的,我們稍後會講到這個配置檔案。
package com.springstudy.spring;

public class Person implements HelloWorld {

	private HelloWorld hello;
	
	public HelloWorld getHello() {
		return hello;
	}

	public void setHello(HelloWorld hello) {
		this.hello = hello;
	}

	@Override
	public String sayHello() {
		String str = hello.sayHello();
		return str;
	}

}
7、然後在 src 資料夾下新建一個包,命名為 “springXML”,然後在該包下新建一個檔案,命名為 “applicationContext.xml”,在該檔案中定義好一個 “HelloChinaImpl” 物件的 Bean 和一個 “HelloUSAImpl” 物件的 Bean。然後再定義好一個 “Person” 類的 Bean。這個 “person” 依賴於 “hellochina” Bean 或 “hellousa” Bean。依賴於哪一個,就可以形象地將其“位置”設定為哪個。比如依賴於 “hellochina” Bean,相當於將 “HelloChinaImpl” 物件賦給 Person 類中的介面 “hello”,然後呼叫它的 sayHello() 方法輸出 “Hello China!” 。
<?xml version="1.0" encoding="UTF-8" ?>   
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     xmlns="http://www.springframework.org/schema/beans"  
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
     
  <bean id="hellochina" class="com.springstudy.spring.HelloChinaImpl"></bean>
  <bean id="hellousa" class="com.springstudy.spring.HelloUSAImpl"></bean>

  <bean id="person" class="com.springstudy.spring.Person">
  	<property name="hello" ref="hellochina"></property>
  </bean>
  
</beans> 
8、最後回到 “com.springstudy.spring” 包下,建立一個 “Main.java” 檔案,用來完成配置檔案的讀取和操作。首先根據配置檔案所在的相對路徑獲取到配置檔案,然後使用 getBean() 方法獲取其中的 “person” 物件,並使用它呼叫 sayHello() 方法。由於在上面的配置檔案中,我們將 <ref> 指向了 “hellochina” 物件,所以會呼叫到 HelloChinaImpl 類的物件的方法,輸出 “Hello China!” 。同樣地,倘若在上面的配置檔案中,我們將 <ref> 指向了 “hellousa” 物件,所以會呼叫到 HelloUSAImpl 類的物件的方法,輸出 “Hello USA!” 。
package com.springstudy.spring;

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

public class Main {

	public static void main(String[] args) {
		ApplicationContext aContext = new ClassPathXmlApplicationContext("/springXML/applicationContext.xml");
		Person person = aContext.getBean("person", Person.class);
		System.out.println(person.sayHello());
	}

}
9、輸出結果如下:

至此,我們已經使用 Spring 完成了一個簡單的 Java 專案了。