| Spring不是“春天”       spring在英文里有春天、彈簧、跳躍和泉眼的意思。但在java中Spring 也表示是一個(gè)開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性由Rod Johnson創(chuàng)建的??蚣艿闹饕獌?yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)允許使用者選擇使用哪一個(gè)組件,同時(shí)為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。      版本:現(xiàn)在spring的最高版本是3.0.0版本,在此文章中我們以2.5.6為例        目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性             功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能         范圍:任何Java應(yīng)用 簡(jiǎn)單來說,Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。               控制反轉(zhuǎn)——Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反——不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。         面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的——完成業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。          容器——Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建——基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生成一個(gè)新的實(shí)例——以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。          框架——Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。   所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。       下載安裝spring--------spring當(dāng)前的最高把版本是3.0.0,文章以2.5.6為例,登錄http://www./站點(diǎn),點(diǎn)擊powloads連接進(jìn)入download頁面下載!        Spring的第一個(gè)案例hello world 添加spring配置文件     在src下新建一個(gè)applinactionContext.xml文檔如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www./schema/beans"             xmlns:xsi="http://www./2001/XMLSchema-instance"             xsi:schemaLocation="http://www./schema/beans                  http://www./schema/beans/spring-beans-2.5.xsd">  </beans>  經(jīng)過配置,一個(gè)Spring的應(yīng)用程序基本就搭建好。圖如下 
 
   環(huán)境搭建好之后我們就以hello world 為例來體驗(yàn)一次sping帶來的快感      接下在src下新建一個(gè)cn.csdn.dao包,在包中創(chuàng)建接口GrerrtingDAO和dao方法GreetingDAOImpl    接口GrerrtingDAO       package cn.csdn.dao;    public interface GreetingDAO {   public void say(); } GreetingDAOImpl方法   package cn.csdn.dao; public class GreetingDAOImpl implements GreetingDAO{ private String say; public void say() {        System.out.println("我說的是:"+say); } public void setSay(String say) { this.say = say; } } 接下來在src下創(chuàng)建service層及cn.csdn.service包,創(chuàng)建GreetingService接口和GreetingServiceImpl 方法         GreetingService接口     package cn.csdn.service; public interface GreetingService { void say(); } GreetingServiceImpl 方法 package cn.csdn.service; import cn.csdn.dao.GreetingDAOImpl; public class GreetingserviceImpl implements GreetingService {  private GreetingDAOImpl GreetingDAOImpl;  public void say() { GreetingDAOImpl.say(); } public void setGreetingDAOImpl(GreetingDAOImpl greetingDAOImpl) { this.GreetingDAOImpl = greetingDAOImpl; }      }     相應(yīng)的層創(chuàng)建完之后我們?cè)谂渲?font face="Times New Roman">spring配置文件    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www./schema/beans"             xmlns:xsi="http://www./2001/XMLSchema-instance"             xsi:schemaLocation="http://www./schema/beans                  http://www./schema/beans/spring-beans-2.5.xsd">    <bean id="greetingDAOImpl" class="cn.csdn.dao.GreetingDAOImpl">    <property name="say">     <value>hello world</value>    </property>   </bean>     <bean id="greetingserviceImpl" class="cn.csdn.service.GreetingserviceImpl">      <property name="greetingDAOImpl" ref="greetingDAOImpl"></property>   </bean> </beans> 最后用junit4進(jìn)行測(cè)試    package cn.csdn.jutil; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.csdn.service.GreetingserviceImpl; public class Springtest {       @Test public void test(){ ApplicationContext ac =new ClassPathXmlApplicationContext("appincationContext.xml");   GreetingserviceImpl gss=(GreetingserviceImpl) ac.getBean("greetingserviceImpl");   gss.say(); } } 后臺(tái)輸出:   我說的是:hello world  Spring的體驗(yàn)到此結(jié)束,經(jīng)過此次體驗(yàn)知道了spring中的許多優(yōu)點(diǎn),我總結(jié)一下: 優(yōu)點(diǎn)1:Spring能消除使用各種各樣格式的屬性定制文件的需要,在整個(gè)應(yīng)用和工程中,可通過一種一致的方法來進(jìn)行配置。曾經(jīng)感到迷惑,一個(gè)特定類要查找迷幻般的屬性關(guān)鍵字或系統(tǒng)屬性,為此不得不讀Javadoc乃至源編碼嗎?有了Spring,你可很簡(jiǎn)單地看到類的JavaBean屬性。倒置控制的使用(在下面討論)幫助完成這種簡(jiǎn)化。  優(yōu)點(diǎn)2:Spring能通過接口而不是類促進(jìn)好的編程習(xí)慣,減少編程代價(jià)到幾乎為零。                     | 
|  |