在eclipse中配置一個簡單的spring入門項目


  spring是一個很優秀的基於Java的輕量級開源框架,為了解決企業級應用的復雜性而創建的,spring不僅可用於服務器端開發,從簡單性、可測試性和松耦合性的角度,任何java應用程序都可以利用這個思路進行開發,Spring的核心就是控制反轉(IoC)和面向切面(AOP),總的來說,Spring是一個分層的Java輕量級框架

  所謂控制反轉就是利用某種技術實現低耦合,對象之間相互的依賴關系是通過被動的方式傳遞進來,而不是對象主動進行另外對象的使用和查找,就是說控制權交給了容器,在初始化的時候,容器將實例化好的對象不用請求就主動傳遞過來,開發過程中不用進行任何的實例化對象就可以使用對象的方法,使用起來也感覺更加的輕松,所有的對象在spring中都是一個bean,spring提供了一種完善的javabean的依賴管理,實際上就是常說的依賴注入,是通過依賴注入的方式實現了控制反轉的操作

  面向切面就是通過分離應用程序的業務邏輯和系統級服務,進行高內聚性的開發,應用對象只完成自己該完成的業務邏輯操作,其他的完全不必考慮,例如系統日志或其他事務等系統服務級操作對象完全不必關心,這樣模塊化更加清晰,更加適用於邏輯復雜的業務系統

  剛接觸spring時會出現很多不好理解的概念,下面從一個最簡單的例子開始,進入spring的學習,讓spring更加的形象

  首先去spring官網下載spring framework框架,官網地址就是spring.io,一個非常簡潔的頁面

  

  然后點擊導航欄的PROJECTS,看到一些比較大塊的項目,單擊SPRING FRAMEWORK

 

  

  然后就進入了spring framework的首頁,網址是http://projects.spring.io/spring-framework/,向下拉右面有一些介紹文檔點擊超鏈接就可以,或者點擊下面的"the modules section fo the reference documentation"超鏈接查看文檔

  

  然后,就看到了很有名的一張圖片就是spring framework框架的架構原理圖

  

  通過這張圖可以清楚的看出spring的大體構成,繼續下拉頁面,點擊超鏈接:http://repo.spring.io/release/org/springframework/spring/

  

  這個就是最后的下載地址了,里面有所有的歷史版本,自己可以根據需要選擇下載,

  

  我這里下載的是最新的spring framework 4.2.4完整版本:spring-framework-4.2.4.RELEASE-dist.zip,也就是第一個,下載之后解壓出來即可

  

  解壓好之后,打開下面的libs目錄,這里面就是spring framework所有的jar包了,我們打開eclipse建立一個項目,普通項目或者web項目都可以

  然后,我們復制必要的jar包,放到項目的某一個指定目錄下或者web項目的lib目錄下,需要的jar包如下圖:

  

  這些就是項目所必須的jar包,需要擴展功能可以根據實際需要導入,復制之后如果是web項目會自動導入到項目,如果是普通項目則需要Build Path導入一下就可以使用了,其中junit-4.1.0.jar不是必須的,這只是單元測試所需要的一個jar包;commons-logging-1.2.jar項目中是沒有的,它是Apache的日志管理工具,spring為了所有的java應用程序進行統一的日志接口管理,所以需要下載commons-logging.jar這個包,下載地址是:http://commons.apache.org/proper/commons-logging/index.html,進入后點擊Download下載就行,然后和spring的包一起導入

  包都導入完畢了,接下來實現一個很簡單的功能,我們建立一個接口,實現的就是輸出一句話,代碼如下:

1 package net.zengzhiying.spring;
2 
3 public interface IHelloMessage {
4     public String sayHello();
5 }

  有兩個類分別實現這個接口,分別返回中文的"大家好!"和英文的"HelloWorld!",代碼如下:

 1 package net.zengzhiying.spring;
 2 
 3 public class HelloChina implements IHelloMessage {
 4 
 5     @Override
 6     public String sayHello() {
 7         return "大家好!";
 8     }
 9 
10 }
 1 package net.zengzhiying.spring;
 2 
 3 public class HelloWorld implements IHelloMessage {
 4 
 5     @Override
 6     public String sayHello() {
 7         return "HelloWorld!";
 8     }
 9 
10 }

  按照一般的使用,我們會分別實例化對象調用里面的方法使用,或者利用多態的概念通過接口來統一實例化對象使用里面的方法,其實有了spring就不用了,我們現在建立一個實體的類,用來放置接口實例化出的對象,

 1 package net.zengzhiying.spring;
 2 
 3 public class Person {
 4     private IHelloMessage helloMessage;
 5 
 6     public Person() {
 7         
 8     }
 9     
10     //帶參構造器注入
11     public Person(IHelloMessage helloMessage) {
12         this.helloMessage = helloMessage;
13     }
14     
15     public IHelloMessage getHelloMessage() {
16         return helloMessage;
17     }
18 
19     public void setHelloMessage(IHelloMessage helloMessage) {
20         this.helloMessage = helloMessage;
21     }
22     
23     public String sayHello() {
24         return this.helloMessage.sayHello();
25     }
26     
27 }

  這個類就是一個Bean,一般的規范就是屬性私有,並且設置get/set方法,分別有無參的和帶參的構造方法,方便使用構造器進行對象的注入,這些類編寫完了,然后我們在項目根目錄下編寫一個配置文件helloMessage.xml,就是這個核心的配置文件,交代了spring應該怎么樣對容器中的對象進行管理,所以說這個xml配置文檔是spring的最重要的部分之一,我們配置代碼如下:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
 3     "http://www.springframework.org/dtd/spring-beans.dtd">
 4 <beans>
 5 
 6 <bean id="helloWorld" class="net.zengzhiying.spring.HelloWorld"></bean>
 7 
 8 <bean id="helloChina" class="net.zengzhiying.spring.HelloChina"></bean>
 9 
10 <bean id="person" class="net.zengzhiying.spring.Person">
11     <!-- 配置依賴關系  控制反轉  get/set方法注入 -->
12     <!-- <property name="helloMessage" ref="helloWorld"></property> -->
13     
14     <!-- 構造器注入 -->
15     <constructor-arg ref="helloWorld" />
16 </bean>
17 
18 </beans>

  除了通用的頭部聲明外,所有的配置代碼都寫到<beans>里面,<bean>就是我們需要控制反轉的所有類,然后后面需要向Person中進行對象的注入,可以用過get/set方法進行注入,也可以通過構造方法進行注入,name就是注入的屬性名,ref就是需要將哪個類的實例化對象注入進去,這樣就完成了簡單的配置,也不難理解

  接下來我們配置主類,用來執行相應的方法,代碼如下:

 1 package net.zengzhiying.spring;
 2 
 3 import org.springframework.beans.factory.BeanFactory;
 4 import org.springframework.beans.factory.xml.XmlBeanFactory;
 5 import org.springframework.core.io.FileSystemResource;
 6 import org.springframework.core.io.Resource;
 7 
 8 public class Main {
 9 
10     public static void main(String[] args) {
11         //引入配置文件
12         Resource r = new FileSystemResource("helloMessage.xml");
13         //加載配置文件
14         BeanFactory f = new XmlBeanFactory(r);
15         //獲取Person實例
16         Person person = (Person) f.getBean("person");
17         String s = person.sayHello();
18         System.out.println(s);
19     }
20 
21 }

  現在只需要引入並加載配置文件,調出bean對象,然后就可以任意使用所有的類中的方法了,可以通過注入不同的類實現不同的操作,結果如下:

  

  同樣的,現在我們也可以通過注入HelloChina類來輸出大家好!實現起來也比較簡單

  以上就是一個簡單的spring初學小例子,體現了依賴注入的方式和控制反轉的思想,spring讓復雜應用的開發變得清晰簡單了

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM