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來(lái)完成以前只可能由EJB完成的事情。然而,,Spring的用途不僅限于服務(wù)器端的開發(fā),。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,,任何Java應(yīng)用都可以從Spring中受益,。 ◆目的:解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能 ◆范圍:任何Java應(yīng)用 簡(jiǎn)單來(lái)說(shuō),,Spring是一個(gè)輕量級(jí)的依賴注入(IoC)和面向切面(AOP)的容器框架,。 ◆輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布,。并且Spring所需的處理開銷也是微不足道的,。此外,Spring是非侵入式的:典型地,,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類,。 ◆控制反轉(zhuǎn)——Spring通過(guò)一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過(guò)被動(dòng)的方式傳遞進(jìn)來(lái),,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反——不是對(duì)象從容器中查找依賴,,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它,。 ◆面向切面——Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(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ǔ)支持,。 折疊特點(diǎn)◆方便解耦,簡(jiǎn)化開發(fā) 通過(guò)Spring提供的IoC容器,,我們可以將對(duì)象之間的依賴關(guān)系交由Spring進(jìn)行控制,避免硬編碼所造成的過(guò)度程序耦合,。有了Spring,,用戶不必再為單實(shí)例模式類、屬性文件解析等這些很底層的需求編寫代碼,,可以更專注于上層的應(yīng)用,。 ◆AOP編程的支持 通過(guò)Spring提供的AOP功能,方便進(jìn)行面向切面的編程,,許多不容易用傳統(tǒng)OOP實(shí)現(xiàn)的功能可以通過(guò)AOP輕松應(yīng)付,。 ◆聲明式事務(wù)的支持 在Spring中,我們可以從單調(diào)煩悶的事務(wù)管理代碼中解脫出來(lái),,通過(guò)聲明式方式靈活地進(jìn)行事務(wù)的管理,,提高開發(fā)效率和質(zhì)量。 ◆方便程序的測(cè)試 可以用非容器依賴的編程方式進(jìn)行幾乎所有的測(cè)試工作,,在Spring里,,測(cè)試不再是昂貴的操作,而是隨手可做的事情,。 ◆方便集成各種優(yōu)秀框架 Spring不排斥各種優(yōu)秀的開源框架,,相反,,Spring可以降低各種框架的使用難度,Spring提供了對(duì)各種優(yōu)秀框架(如Struts,Hibernate,、Hessian,、Quartz)等的直接支持。 ◆降低Java EE API的使用難度 Spring對(duì)很多難用的Java EE API(如JDBC,,JavaMail,,遠(yuǎn)程調(diào)用等)提供了一個(gè)薄薄的封裝層,通過(guò)Spring的簡(jiǎn)易封裝,,這些Java EE API的使用難度大為降低,。 ◆Java 源碼是經(jīng)典學(xué)習(xí)范例 Spring的源碼設(shè)計(jì)精妙,、結(jié)構(gòu)清晰,、匠心獨(dú)用,處處體現(xiàn)著大師對(duì)Java設(shè)計(jì)模式靈活運(yùn)用以及對(duì)Java技術(shù)的高深造詣,。Spring框架源碼無(wú)疑是Java技術(shù)的最佳實(shí)踐范例,。如果想在短時(shí)間內(nèi)迅速提高自己的Java技術(shù)水平和應(yīng)用開發(fā)水平,學(xué)習(xí)和研究Spring源碼將會(huì)使你收到意想不到的效果,。 |
|
來(lái)自: 夜空小雄 > 《知識(shí)點(diǎn)》