Spring
一、簡(jiǎn)介
Spring 是個(gè)java企業(yè)級(jí)應(yīng)用的開(kāi)源開(kāi)發(fā)框架。Spring主要用來(lái)開(kāi)發(fā)Java應(yīng)用,但是有些擴(kuò)展是針對(duì)構(gòu)建J2EE平臺(tái)的web應(yīng)用。Spring 框架目標(biāo)是簡(jiǎn)化Java企業(yè)級(jí)應(yīng)用開(kāi)發(fā),并通過(guò)POJO為基礎(chǔ)的編程模型促進(jìn)良好的編程習(xí)慣。
二、為什么要使用Spring?
- 輕量:Spring 是輕量的,基本的版本大約2MB。
- 控制反轉(zhuǎn):Spring通過(guò)控制反轉(zhuǎn)實(shí)現(xiàn)了松散耦合,對(duì)象們給出它們的依賴,而不是創(chuàng)建或查找依賴的對(duì)象們。
- 面向切面的編程(AOP):Spring支持面向切面的編程,并且把應(yīng)用業(yè)務(wù)邏輯和系統(tǒng)服務(wù)分開(kāi)。
- 容器:Spring 包含并管理應(yīng)用中對(duì)象的生命周期和配置。
- MVC框架:Spring的WEB框架是個(gè)精心設(shè)計(jì)的框架,是Web框架的一個(gè)很好的替代品。
- 事務(wù)管理:Spring 提供一個(gè)持續(xù)的事務(wù)管理接口,可以擴(kuò)展到上至本地事務(wù)下至全局事務(wù)(JTA)。
- 異常處理:Spring 提供方便的API把具體技術(shù)相關(guān)的異常(比如由JDBC,Hibernate or JDO拋出的)轉(zhuǎn)化為一致的unchecked 異常。
三 、核心模塊
1、 說(shuō)明
? Spring框架包含的功能大約由20個(gè)模塊組成。這些模塊按組可分為核心容器、數(shù)據(jù)訪問(wèn)/集成,Web,AOP(面向切面編程)、設(shè)備、消息和測(cè)試
2、結(jié)構(gòu)圖

image
3、模塊介紹
| GroupId | ArtifactId | 說(shuō)明 |
|---|---|---|
| org.springframework | spring-beans(重點(diǎn)) | Beans 支持,包含 Groovy |
| org.springframework | spring-aop(重點(diǎn)) | 基于代理的AOP支持 |
| org.springframework | spring-aspects(重點(diǎn)) | 基于AspectJ 的切面 |
| org.springframework | spring-context(重點(diǎn)) | 應(yīng)用上下文運(yùn)行時(shí),包括調(diào)度和遠(yuǎn)程抽象 |
| org.springframework | spring-context-support | 支持將常見(jiàn)的第三方類庫(kù)集成到 Spring 應(yīng)用上下文 |
| org.springframework | spring-core(重點(diǎn)) | 其他模塊所依賴的核心模塊 |
| org.springframework | spring-expression | Spring 表達(dá)式語(yǔ)言,SpEL |
| org.springframework | spring-instrument | JVM 引導(dǎo)的儀表(監(jiān)測(cè)器)代理 |
| org.springframework | spring-instrument-tomcat | Tomcat 的儀表(監(jiān)測(cè)器)代理 |
| org.springframework | spring-jdbc | 支持包括數(shù)據(jù)源設(shè)置和 JDBC 訪問(wèn)支持 |
| org.springframework | spring-jms | 支持包括發(fā)送/接收J(rèn)MS消息的助手類 |
| org.springframework | spring-messaging | 對(duì)消息架構(gòu)和協(xié)議的支持 |
| org.springframework | spring-orm(重點(diǎn)) | 對(duì)象/關(guān)系映射,包括對(duì) JPA 和 Hibernate 的支持 |
| org.springframework | spring-oxm | 對(duì)象/XML 映射(Object/XML Mapping,OXM) |
| org.springframework | spring-test | 單元測(cè)試和集成測(cè)試支持組件 |
| org.springframework | spring-tx(重點(diǎn)) | 事務(wù)基礎(chǔ)組件,包括對(duì) DAO 的支持及 JCA 的集成 |
| org.springframework | spring-web(重點(diǎn)) | web支持包,包括客戶端及web遠(yuǎn)程調(diào)用 |
| org.springframework | spring-webmvc(重點(diǎn)) | REST web 服務(wù)及 web 應(yīng)用的 MVC 實(shí)現(xiàn) |
| org.springframework | spring-webmvc-portlet | 用于 Portlet 環(huán)境的MVC實(shí)現(xiàn) |
| org.springframework | spring-websocket | WebSocket 和 SockJS 實(shí)現(xiàn),包括對(duì) STOMP 的支持 |
4、 模塊詳解
1、核心模塊(core)
- spring-core:依賴注入IoC與DI的最基本實(shí)現(xiàn)
- spring-beans:Bean工廠與bean的裝配
- spring-context:spring的context上下文即IoC容器
- spring-context-support
- spring-expression:spring表達(dá)式語(yǔ)言
2、說(shuō)明
- spring-core
這個(gè)jar文件包含Spring框架基本的核心工具類,Spring其它組件要都要使用到這個(gè)包里的類,是其它組件的基本核心,當(dāng)然你也可以在自己的應(yīng)用系統(tǒng)中使用這些工具類 - spring-beans 模塊
這個(gè)jar文件是所有應(yīng)用都要用到的,它包含訪問(wèn)配置文件、創(chuàng)建和管理bean以及進(jìn)行Inversion of Control / Dependency Injection(IoC/DI)操作相關(guān)的所有類。如果應(yīng)用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了 - spring-context 模塊
Spring核心提供了大量擴(kuò)展,這樣使得由 Core 和 Beans 提供的基礎(chǔ)功能增強(qiáng):這意味著Spring 工程能以框架模式訪問(wèn)對(duì)象。Context 模塊繼承了Beans 模塊的特性并增加了對(duì)國(guó)際化(例如資源綁定)、事件傳播、資源加載和context 透明化(例如 Servlet container)。同時(shí),也支持JAVA EE 特性,例如 EJB、 JMX 和 基本的遠(yuǎn)程訪問(wèn)。Context 模塊的關(guān)鍵是 ApplicationContext 接口。spring-context-support 則提供了對(duì)第三方庫(kù)集成到 Spring-context 的支持,比如緩存(EhCache, Guava, JCache)、郵件(JavaMail)、調(diào)度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。 - spring-expression 模塊
為在運(yùn)行時(shí)查詢和操作對(duì)象圖提供了強(qiáng)大的表達(dá)式語(yǔ)言。它是JSP2.1規(guī)范中定義的統(tǒng)一表達(dá)式語(yǔ)言的擴(kuò)展,支持 set 和 get 屬性值、屬性賦值、方法調(diào)用、訪問(wèn)數(shù)組集合及索引的內(nèi)容、邏輯算術(shù)運(yùn)算、命名變量、通過(guò)名字從Spring IoC容器檢索對(duì)象,還支持列表的投影、選擇以及聚合等。
5、Data Access/Integration - 數(shù)據(jù)訪問(wèn)與集成
1、概要
? 數(shù)據(jù)訪問(wèn)與集成層包含 JDBC、ORM、OXM、JMS和事務(wù)模塊。
2、詳細(xì)說(shuō)明
- spring-jdbc 模塊
提供了 JDBC抽象層,它消除了冗長(zhǎng)的 JDBC 編碼和對(duì)數(shù)據(jù)庫(kù)供應(yīng)商特定錯(cuò)誤代碼的解析。 - spring-tx 模塊
支持編程式事務(wù)和聲明式事務(wù),可用于實(shí)現(xiàn)了特定接口的類和所有的 POJO 對(duì)象。編程式事務(wù)需要自己寫beginTransaction()、commit()、rollback()等事務(wù)管理方法,聲明式事務(wù)是通過(guò)注解或配置由 spring 自動(dòng)處理,編程式事務(wù)粒度更細(xì)。 - spring-orm 模塊
提供了對(duì)流行的對(duì)象關(guān)系映射 API的集成,包括 JPA、JDO 和 Hibernate 等。通過(guò)此模塊可以讓這些 ORM 框架和 spring 的其它功能整合,比如前面提及的事務(wù)管理。 - spring-oxm
模塊提供了對(duì) OXM 實(shí)現(xiàn)的支持,比如JAXB、Castor、XML Beans、JiBX、XStream等。 - spring-jms
模塊包含生產(chǎn)(produce)和消費(fèi)(consume)消息的功能。從Spring 4.1開(kāi)始,集成了 spring-messaging 模塊
6、AOP
- spring-aop 模塊
提供了面向切面編程(AOP)的實(shí)現(xiàn),可以定義諸如方法攔截器和切入點(diǎn)等,從而使實(shí)現(xiàn)功能的代碼徹底的解耦。使用源碼級(jí)的元數(shù)據(jù)。 - spring-aspects 模塊
提供了對(duì) AspectJ 的集成
7、Instrumentation
- spring-instrument
模塊提供了對(duì)檢測(cè)類的支持和用于特定的應(yīng)用服務(wù)器的類加載器的實(shí)現(xiàn)。 - spring-instrument-tomcat
模塊包含了用于 Tomcat 的Spring 檢測(cè)代理。
8、Messaging - 消息處理
- spring-messaging 模塊
從 Spring 4 開(kāi)始集成,從一些 Spring 集成項(xiàng)目的關(guān)鍵抽象中提取出來(lái)的,這些項(xiàng)目包括 Message、MessageChannel、MessageHandler 和其它服務(wù)于消息處理的項(xiàng)目。這個(gè)模塊也包含一系列的注解用于映射消息到方法
9 、Web
概要
? Web 層包括 spring-web、spring-webmvc、spring-websocket、spring-webmvc-portlet 等模塊。
詳細(xì)說(shuō)明
- spring-web 模塊
提供面向 web 的基本功能和面向 web 的應(yīng)用上下文,比如 multipart 文件上傳功能、使用 Servlet 監(jiān)聽(tīng)器初始化 IoC 容器等。它還包括 HTTP 客戶端以及 Spring 遠(yuǎn)程調(diào)用中與 web 相關(guān)的部分 - spring-webmvc 模塊
為 web 應(yīng)用提供了模型視圖控制(MVC)和 REST Web 服務(wù)的實(shí)現(xiàn)。Spring 的 MVC 框架可以使領(lǐng)域模型代碼和 web 表單完全地分離,且可以與 Spring 框架的其它所有功能進(jìn)行集成 - spring-webmvc-portlet 模塊
(即Web-Portlet模塊)提供了用于 Portlet 環(huán)境的 MVC 實(shí)現(xiàn),并反映了 pring-webmvc 模塊的功能
10、Test
- spring-test 模塊
通過(guò) JUnit 和 TestNG 組件支持單元測(cè)試和集成測(cè)試。它提供了一致性地加載和緩存 Spring 上下文,也提供了用于單獨(dú)測(cè)試代碼的模擬對(duì)象(mock object)
四、Spring包依賴說(shuō)明
- spring-core.jar依賴commons-collections.jar,spring-core.jar。
- spring-beans.jar依賴 spring-core.jar,cglib-nodep.jar
- spring-aop.jar依賴spring-core.jar,spring-beans.jar,cglib-nodep.jar,aopalliance.jar
- spring-context.jar依賴spring-core.jar,spring-beans.jar,spring-aop.jar,commons-collections.jar,aopalliance.jar
- spring-dao.jar依賴spring-core.jar,spring-beans.jar,spring-aop.jar,spring-context.jar
- spring-jdbc.jar依賴spring-core.jar,spring-beans.jar,spring-dao.jar
- spring-web.jar依賴spring-core.jar,spring-beans.jar,spring-context.jar
- spring-webmvc.jar依賴spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar
- spring -hibernate.jar依賴spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-jdbc.jar,spring-orm.jar,spring-web.jar,spring-webmvc.jar
- spring-orm.jar依賴spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-jdbc.jar,spring-web.jar,spring-webmvc.jar
- spring -remoting.jar依賴spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-context.jar,spring-web.jar,spring-webmvc.jar
- spring-support.jar依賴spring-core.jar,spring-beans.jar,spring-aop.jar,spring-dao.jar,spring-context.jar,spring-jdbc.jar
- spring-mock.jar依賴spring-core.jar,spring-beans.jar,spring-dao.jar,spring-context.jar,spring-jdbc.jar
下載地址