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 專案了。