spring官網(wǎng)
spring包下載地址
介紹文章
spring簡介:spring百度百科介紹
1.方便解耦,簡化開發(fā)
通過Spring提供的IoC容器,我們可以將對象之間的依賴關(guān)系交由Spring進行控制,避免硬編碼所造成的過度程序耦合。有了Spring,用戶不必再為單實例模式類、屬性文件解析等這些很底層的需求編寫代碼,可以更專注于上層的應(yīng)用。
2.AOP編程的支持
通過Spring提供的AOP功能,方便進行面向切面的編程,許多不容易用傳統(tǒng)OOP實現(xiàn)的功能可以通過AOP輕松應(yīng)付。
3.聲明式事務(wù)的支持
在Spring中,我們可以從單調(diào)煩悶的事務(wù)管理代碼中解脫出來,通過聲明式方式靈活地進行事務(wù)的管理,提高開發(fā)效率和質(zhì)量。
4.方便程序的測試
可以用非容器依賴的編程方式進行幾乎所有的測試工作,在Spring里,測試不再是昂貴的操作,而是隨手可做的事情。例如:Spring對Junit4支持,可以通過注解方便的測試Spring程序。
5.方便集成各種優(yōu)秀框架
Spring不排斥各種優(yōu)秀的開源框架,相反,Spring可以降低各種框架的使用難度,Spring提供了對各種優(yōu)秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。
6.降低Java EE API的使用難度
Spring對很多難用的Java EE API(如JDBC,JavaMail,遠程調(diào)用等)提供了一個薄薄的封裝層,通過Spring的簡易封裝,這些Java EE API的使用難度大為降低。
7.Java 源碼是經(jīng)典學(xué)習(xí)范例
Spring的源碼設(shè)計精妙、結(jié)構(gòu)清晰、匠心獨運,處處體現(xiàn)著大師對Java設(shè)計模式靈活運用以及對Java技術(shù)的高深造詣。Spring框架源碼無疑是Java技術(shù)的最佳實踐范例。如果想在短時間內(nèi)迅速提高自己的Java技術(shù)水平和應(yīng)用開發(fā)水平,學(xué)習(xí)和研究Spring源碼將會使你收到意想不到的效果。
Spring 框架是一個分層架構(gòu),由 7 個定義良好的模塊組成。Spring模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理 bean 的方式,如圖所示:
組成Spring框架的每個模塊(或組件)都可以單獨存在,或者與其他一個或多個模塊聯(lián)合實現(xiàn)。每個模塊的功能如下:
1、核心容器:核心容器提供 Spring 框架的基本功能(Spring Core)。核心容器的主要組件是 BeanFactory,它是工廠模式的實現(xiàn)。BeanFactory 使用控制反轉(zhuǎn)(IOC) 模式將應(yīng)用程序的配置和依賴性規(guī)范與實際的應(yīng)用程序代碼分開。
2、Spring 上下文:Spring 上下文是一個配置文件,向 Spring框架提供上下文信息。Spring 上下文包括企業(yè)服務(wù),例如JNDI、EJB、電子郵件、國際化、校驗和調(diào)度功能。
3、Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向切面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對象支持AOP。Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù)。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。
4、Spring DAO:JDBCDAO抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯誤消息。異常層次結(jié)構(gòu)簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結(jié)構(gòu)。
5、Spring ORM:Spring 框架插入了若干個ORM框架,從而提供了 ORM 的對象關(guān)系工具,其中包括JDO、Hibernate和iBatisSQL Map。所有這些都遵從 Spring 的通用事務(wù)和 DAO 異常層次結(jié)構(gòu)。
6、Spring Web 模塊:Web 上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于 Web 的應(yīng)用程序提供了上下文。所以,Spring框架支持與 Jakarta Struts 的集成。Web 模塊還簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο?/a>的工作。
7、Spring MVC 框架:MVC框架是一個全功能的構(gòu)建 Web應(yīng)用程序的 MVC 實現(xiàn)。通過策略接口,MVC框架變成為高度可配置的,MVC 容納了大量視圖技術(shù),其中包括 JSP、Velocity、Tiles、iText 和 POI。模型由javabean構(gòu)成,存放于Map;視圖是一個接口,負責(zé)顯示模型;控制器表示邏輯代碼,是Controller的實現(xiàn)。Spring框架的功能可以用在任何J2EE服務(wù)器中,大多數(shù)功能也適用于不受管理的環(huán)境。Spring 的核心要點是:支持不綁定到特定 J2EE服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對象。毫無疑問,這樣的對象可以在不同J2EE 環(huán)境(Web 或EJB)、獨立應(yīng)用程序、測試環(huán)境之間重用。
圖中將spring分為5個部分:core、aop、data access、web、test,圖中每個圓角矩形都對應(yīng)一個jar,如果在maven中配置,所有這些jar的“groupId”都是“org.springframework”,每個jar有一個不同的“artifactId”,另外,“instrumentation”有兩個jar,還有一個“spring-context-support”圖中沒有列出,所以spring3的jar包一共是19個
下面介紹這5個部分的jar以及依賴關(guān)系
core
core部分包含4個模塊
spring-core:依賴注入IoC與DI的最基本實現(xiàn)
spring-beans:Bean工廠與bean的裝配
spring-context:spring的context上下文即IoC容器
spring-expression:spring表達式語言
它們的完整依賴關(guān)系
因為spring-core依賴了commons-logging,而其他模塊都依賴了spring-core,所以整個spring框架都依賴了commons-logging,如果有自己的日志實現(xiàn)如log4j,可以排除對commons-logging的依賴,沒有日志實現(xiàn)而排除了commons-logging依賴,編譯報錯
aop
aop部分包含4個模塊
spring-aop:面向切面編程
spring-aspects:集成AspectJ
spring-instrument:提供一些類級的工具支持和ClassLoader級的實現(xiàn),用于服務(wù)器
spring-instrument-tomcat:針對tomcat的instrument實現(xiàn)
它們的依賴關(guān)系
data access
data access部分包含5個模塊
spring-jdbc:jdbc的支持
spring-tx:事務(wù)控制
spring-orm:對象關(guān)系映射,集成orm框架
spring-oxm:對象xml映射
spring-jms:java消息服務(wù)
它們的依賴關(guān)系
web
web部分包含4個模塊
spring-web:基礎(chǔ)web功能,如文件上傳
spring-webmvc:mvc實現(xiàn)
spring-webmvc-portlet:基于portlet的mvc實現(xiàn)
spring-struts:與struts的集成,不推薦,spring4不再提供
它們的依賴關(guān)系
test
test部分只有一個模塊,我將spring-context-support也放在這吧
spring-test:spring測試,提供junit與mock測試功能
spring-context-support:spring額外支持包,比如郵件服務(wù)、視圖解析等
它們的依賴關(guān)系
到這里,spring3的介紹就完了,看著這些圖我相信你在maven中配置spring依賴時不會再混亂了
下面介紹spring4,與spring3結(jié)構(gòu)基本相同,下面是官網(wǎng)給出的結(jié)構(gòu)圖
可以看到,圖中去掉了spring3的struts,添加了messaging和websocket,其他模塊保持不變,因此,spring4的jar有20個
spring-websocket:為web應(yīng)用提供的高效通信工具
spring-messaging:用于構(gòu)建基于消息的應(yīng)用程序
它們的依賴關(guān)系