Spring框架是Spring技術棧的核心,它實現(xiàn)了對bean的依賴管理和AOP的編程方式,降低了代碼的耦合度,極大提升了編程效率,是很好的一站式構(gòu)建企業(yè)級應用的輕量級解決方案。
模塊化的spring架構(gòu)
Spring框架是模塊化的,開發(fā)人員可以自由選擇所需部分。Spring框架支持聲明式事務管理,通過RMI或WEB服務遠程訪問用戶的邏輯,并支持多種選擇來持久化用戶數(shù)據(jù)。它提供了全功能的Spring MVC及Spring WebFlux框架,也支持AOP集成到軟件中。
spring的優(yōu)點
Spring框架是一個輕量級的Java平臺,可以提供完整的基礎設施來支持開發(fā)Java應用程序。它負責基礎設施功能,讓開發(fā)者可以更專注于業(yè)務邏輯的開發(fā)。
本地Java方法可以執(zhí)行數(shù)據(jù)庫事務,無須自己處理事務API;
本地Java方法可以執(zhí)行遠程過程,無須自己處理遠程API;
本地Java方法可以成為HTTP端點,無須自己處理servlet API;
本地Java方法可以擁有管理操作,無須自己處理JMX API;
本地Java方法可以執(zhí)行消息處理,無須自己處理JMS API;
IOC
Java平臺提供了豐富的應用程序開發(fā)功能,但它缺乏組織基本構(gòu)建模塊成為一個完成系統(tǒng)的方法。開發(fā)者可以使用各種設計模式,如Factory、Abstract Factory、Builder、Decorator等模式來組合各種類和對象實例構(gòu)建應用程序。雖然這些模式可以解決對應的問題,但帶來的問題是使用它的技術門檻比較高,否則難以在應用程序中有效的使用它。
Spring框架的IOC組件通過提供正規(guī)化的方法來組合不同的組件,使它們成為一個完整可用的應用。Spring框架將規(guī)范化的設計模式作為一等對象,方便開發(fā)者將其集成到自己的應用程序中。開發(fā)人員無須手動處理對象間的依賴關系,全部交給Spring容器去管理,大大提升了開發(fā)體驗。
Spring框架常用模塊
Spring框架包含了20多種模塊,涵蓋了企業(yè)級開發(fā)的各個方面。模塊如下:
spring-aop、spring-orm、spring-context-support、spring-webmvc、spring-jdbc、spring-beans-groovy、spring-tx、spring-messaging、spring-context-indexer、spring-webflux、spring-jcl、spring-beans、spring-test、spring-expression、spring-context、spring-web、spring-instrument、spring-aspects、spring-oxm、spring-core、spring-websocket、spring-jms、spring-framework-bom。

1、核心容器
核心容器(Core Container)由spring-core、spring-beans、spring-context、spring-context-support、spring-expression模塊組成。
spring-core和spring-beans模塊是框架的基本部分,包括了IOC和DI功能。BeanFactory是一個復雜工廠模式的實現(xiàn),無須編程就能實現(xiàn)單例,允許開發(fā)人員將配置和特定依賴從實際程序邏輯中解耦。
spring-context模塊是建立在Core和Beans模塊提供的功能基礎之上的,它是一種在框架類型下實現(xiàn)對象存儲操作的手段。它繼承了Beans模塊的特性,并增加了對國際化的支持、事件廣播、資源加載和創(chuàng)建上下文,也支持如EJB、JMX和基礎遠程訪問的J2EE特性。ApplicationContext接口是Context模塊的主要表現(xiàn)形式。
spring-context-support模塊提供了對常見的第三方庫的支持,以便集成到spring應用上下文,如緩存(EhCache、JCache)和調(diào)度(CommonJ、Quartz)等。
spring-expression模塊提供了一種強大的表達式語言,用來在運行時查詢和操作對象圖。它是對JSP2.1規(guī)范所指定的統(tǒng)一表達式語言的一種擴展,這種語言支持對屬性值、屬性參數(shù)、方法調(diào)用、數(shù)組內(nèi)容存儲、收集器和索引、邏輯和算數(shù)的操作機命名變量,并通過名稱從spring控制反轉(zhuǎn)容器中獲取對象。
2、AOP(面向切面編程)和Instrumentation
spring-aop模塊提供AOP的實現(xiàn),可以實現(xiàn)方法攔截器和切入點完全分離代碼。
spring-aspects模塊提供了集成使用AspectJ的功能,spring-instrument模塊提供了類instrumentation的支持和在某些應用服務器使用類加載器實現(xiàn)。spring-instrument-tomcat用于Tomcat?Instrumentation代理。
3、消息
spring4版本開始提供了spring-messaging模塊,包含了Message、MessageChannel、MessageHandler及其他用來提供基于消息的基礎服務。此外還包含一組消息映射方法的注解,類似Spring MVC的注解。
4、數(shù)據(jù)集成與訪問
數(shù)據(jù)訪問/集成層(Data Access/Integration)由JDBC、ORM、OXM、JMS和Transaction模塊組成。
spring-jdbc模塊提供了一個JDBC抽象層,讓開發(fā)者避免進行繁瑣的JDBC編碼和解析數(shù)據(jù)庫供應商特定的錯誤代碼。
spring-tx模塊支持用于實現(xiàn)特殊接口和所有POJO類的編程及聲明式事務管理。
spring-orm模塊為對象關系映射API集成層,包括JPA和Hibernate。它可以將OR映射框架與spring提供的其他功能結(jié)合實現(xiàn)。
spring-oxm模塊提供了一個支持object/XML映射實現(xiàn)的抽象層,如JAXB。Castor、JiBX和XStream。
spring-jms模塊包含用于生成和使用消息的功能,從4.1版本開始提供了與spring-messaging的集成。
5、Web
Web層由spring-web、spring-webmvc、spring-websocket、spring-webflux組成。
spring-web模塊提供了基本的面向web開發(fā)的集成功能,如文件上傳、用于初始化IOC容器的servlet監(jiān)聽、web程序上下文等。它包含了HTTP客戶端及web相關的spring遠程訪問的支持。
spring-webmvc模塊包含spring的MVC和REST服務功能。
spring-websocket模塊是基于websocket協(xié)議通信的程序開發(fā)。
spring-webflux模塊是spring5新增加的支持響應式編程的web開發(fā)框架。
6、測試
spring-test模塊支持通過組合JUnit或TestNG來實現(xiàn)單元測試和集成測試功能。它提供了Srping ApplicationContexts的持續(xù)加載并緩存這些上下文,還提供了用于孤立測試代碼的模擬對象(mock objects)。
--參考文獻《Srping5開發(fā)大全》