Spring的大名如雷貫耳,但一直在用公司自己的一套框架只是了解沒有怎么使用,最近項目需要開始研究Spring,首先需要拿到Spring的JAR包進行開發,官網介紹是使用maven和gradle管理,對于內部依賴JAR包直接處理掉直接看不出來,對于不使用這二個管理工具而言JAR包關系有點不知所綜,同時即使使用這二個工具,對JAR包的依賴也有點亂,所以有必要搞清楚JAR包關系。
本文對于Spring的JAR包使用和配置,結合網友材料以spring 4.3.6.RELEASE版本為例,介紹spring框架結構和各模塊對應JAR包以及模塊間JAR依賴關系。
注:不同版本JAR包依賴會有所區別
spring官網給出了一張spring4的結構圖
圖中可以簡單認為將spring分為5個部分:core、aop、data access、web、test,圖中每個圓角矩形都對應相應jar包,如果在maven中配置,所有這些jar的“groupId”都是“org.springframework”,每個jar有一個不同的“artifactId”,官方給出總共20個JAR包
題外話,對于JAR包的下載,除官方給出的通過maven和gradle依賴自動下載外,還可以通過以下地址直接下載全量ZIP包,但對于spring JAR包依賴的jar包需要自己額外下載
http://repo.spring.io/release/org/springframework/spring/
下面介紹這5個部分的jar以及依賴關系
core部分包含4個模塊
1、spring-core:依賴注入IoC與DI的最基本實現,對應spring-core-4.3.6.RELEASE.jar
2、spring-beans:Bean工廠與bean的裝配,對應spring-beans-4.3.6.RELEASE.jar
3、spring-context:spring的context上下文即IoC容器,包含二個JAR包,對應spring-context-4.3.6.RELEASE.jar和spring-context-support-4.3.6.RELEASE.jar,其中support是spring額外支持包,比如郵件服務、視圖解析等
4、spring-expression:spring表達式語言,對應spring-expression-4.3.6.RELEASE.jar
它們的完整依賴關系
因為spring-core依賴了commons-logging,而其他模塊都依賴了spring-core,所以整個spring框架都依賴了commons-logging,如果有自己的日志實現如log4j,可以排除對commons-logging的依賴,沒有日志實現而排除了commons-logging依賴,編譯報錯
aop部分包含4個模塊
1、spring-aop:面向切面編程,對應spring-aop-4.3.6.RELEASE.jar
2、spring-aspects:集成AspectJ,對應spring-aspects-4.3.6.RELEASE.jar
3、spring-instrument:提供一些類級的工具支持和ClassLoader級的實現,用于服務器,對應spring-instrument-4.3.6.RELEASE.jar,同時提供針對tomcat的instrument實現jar包spring-instrument-tomcat-4.3.6.RELEASE.jar
4、spring-messaging:用于構建基于消息的應用程序spring-messaging-4.3.6.RELEASE.jar
它們的依賴關系
data access部分包含5個模塊
1、spring-jdbc:jdbc的支持,對應spring-jdbc-4.3.6.RELEASE.jar
2、spring-tx:事務控制,對應 spring-tx-4.3.6.RELEASE.jar
3、spring-orm:對象關系映射,集成orm框架,對應spring-orm-4.3.6.RELEASE.jar
4、spring-oxm:對象xml映射,對應 spring-oxm-4.3.6.RELEASE.jar
5、spring-jms:java消息服務,對應spring-jms-4.3.6.RELEASE.jar
它們的依賴關系
web部分包含4個模塊
1、spring-web:基礎web功能,如文件上傳,spring-web-4.3.6.RELEASE.jar
2、spring-webmvc:mvc實現,對應spring-webmvc-4.3.6.RELEASE.jar
3、spring-webmvc-portlet:基于portlet的mvc實現,對應spring-webmvc-portlet-4.3.6.RELEASE.jar
4、spring-websocket:為web應用提供的高效通信工具,對應spring-websocket-4.3.6.RELEASE.jar
它們的依賴關系
?test部分只有一個模塊,
1、spring-test:spring測試,提供junit與mock測試功能,對應spring-test-4.3.6.RELEASE.jar
它們的依賴關系
到這里,spring4的結構、JAR包以及依賴關系介紹就完了,看完這些圖相信對整個Spring結構以及所需JAR包都有清晰了解,同時對于在maven中配置spring依賴時也不會再混亂了。