Spring框架總結(一)——概述


一、Spring是什么


 

  Spring是分層的Java SE/EE 應用 full-stack 輕量級開源框架,以IoC(Inverse Of Controller:控制反轉) 和AOP(Aspect Oriented Programming:面向切面編程)為內核,

提供了展現層Spring MVC和持久層Spring JDBC以及業務層事務管理等眾多的企業級應用技術,還能整合開源世界眾多著名的第三方框架和類庫,逐漸成為使用最多的

Java EE企業應用開源框架。

 

二、Spring的來源


 

  最早由Rod Johnson創建,並在《Expert One-on-One:J2EE Design and Development》這本著作中進行了介紹。Spring是為了解決企業級應用開發的復雜性而創建

的,使用Spring可以讓簡單的JavaBean實現只有EJB才能完成的事情。但Spring不僅僅局限於服務器開發,任何Java引用都能在簡單性、可測試性和耦合性等方面從Spring

中獲益。

 

三、Spring的優勢


 

  1、方便解耦,簡化開發

  通過Spring提供的IoC容器,可以將對象間的依賴關系交由Spring進行控制,避免硬編碼所造成的過度程序耦合。用戶也不必再為單列模式類、屬性文件解析等這些很底層

的需求編寫代碼,可以更專注於上層的應用。

  2、AOP編程的支持

  通過Spring的AOP功能,方便進行面向切面的編程,許多不容易用OOP實現的功能可以通過AOP輕松應付

  3、聲明式事務的支持

  可以從單調煩悶的事務管理代碼中解脫出來,通過聲明式方式靈活的進行事務的管理,提高開發效率和質量。

  4、方便程序的測試

  可以用非容器依賴的編程方式進行幾乎所有的測試工作,測試不再是昂貴的操作,而是隨手可做的事情。

  5、方便集成各種優秀框架

  Spring可以將降低各種框架的使用難度,提供了對各種優秀框架(StrutsHibernateHessianQuart等)的直接支持。

  6、降低JavaEE API的使用難度

  Spring對JavaEE API(如 JDBC、JavaMail、遠程調用等)進行了薄薄的封轉層,使這些API的使用難度大為降低。

  7、Java源碼是經典學習范例

  Spring的源代碼設計精妙、結構清晰、匠心獨用,處處體現着大師對Java設計模式靈活運用以及對Java技術的高深造詣。它的源代碼

是Java技術的最佳實踐的范例。

 

四、Spring的體系結構


 

  Spring 5的體系結構,可分為7個模塊集合:

  (1) 核心容器(Core Container)

  (2) AOP (面向切面編程)

  (3) Instrumentation(設備支持)

  (4) Messaing(報文發送)

  (5) Date Access/Integeration(數據訪問及集成)

  (6) 數據訪問及集成(Data Access/Integeration)

  (7) Test

 

 

 1、核心模塊

  由 spring-beans、sping-cores、spring-context和spring-expression(spring expression language,SpEL,spring表達語言) 4 個模塊組成。

  • spring-beans模塊:提供了BeanFactory,是工廠模式的一個經典實現,Spring將管理對象成為Bean
  • spring-cores模塊:提供了框架的基本組成部分,包括控制反轉(IoC)和依賴注入(DI)
  • spring-context模塊:建立在Core和Beans模塊的基礎之上,提供了一個框架式的對象訪問方式,是訪問定義和配置的任何對象的媒介。ApplicationContext接口是Context的焦點
  • spring-context-support模塊:支持整合第三方庫到Spring應用程序上下文,特別是用於高速緩存(EhCache、JCache)和任務調度(CommonJ、Quartz)的支持
  • spring-expression模塊:提供了強大的表達式語言去支持運行時查詢和操作對象圖。這是對JSP2.1規范中規定的統一表達式語言(Unified EL)的擴展。該語言支持設置和獲取屬性值、該語言支持設置和獲取屬性值、屬性分配、方法調用、訪問數組、集合和索引器的內容、邏輯和算術運算、變量命名以及Spring的Ioc容器總以名稱檢索對象。它還支持列表投影、選擇以及常用的列表聚合。

2、AOP和Instrumentation

  • spring-aop模塊:提供了一個符合AOP要求的面向切面的編程實現,允許定義方法攔截器和切入點,將代碼按照功能進行分裂,以便干凈的解耦
  • spring-aspects模塊:提供了與AspetctJ的集成功能,AspectJ是一個功能強大且成熟的AOP框架
  • spring-instrument模塊:提供了類植入(Instrumentation)支持和類加載器的實現,可以在特定的應用服務器中使用

3、消息

  spring4.0以后新增了消息(spring-messaging)模塊,該模塊提供了對消息傳遞體系結構的協議的支持。

4、數據訪問/集成

  由JDBC、ORM、OXM、JMS和事務模塊組成

  • spring-jdbc模塊:提供了一個JDBC的抽象層,消除了繁瑣的JDBC編碼和數據庫廠商特有的錯誤代碼解析。
  • spring-tx模塊:支持用於實現特殊接口和所有POJO(普通Java對象)類的編程和聲明式事務管理
  • spring-orm模塊:流行的對象關系映射(Object-Relational Mapping)API提供集成層,包括JPA和Hibernate。使用Spring-orm模塊可以將這些O/R映射框架與Spring提供的所有其他功能結合使用,例如聲明式事務管理功能
  • spring-oxm模塊:提供了一個支持對象/XML映射的抽象層實現,例如JAXB、Castor、JiBX和XStream。
  • spring-jms模塊(Java Message Service):指Java消息傳遞服務,包含用於生產和使用消息的功能。自Spring4.1以來提供了與Spring-messaging模塊的集成

5、Web

  Web層有spring-web、spring-webmvc、spring-websocket和Portlet模塊組成

  • spring-web:提供了基本的Web開發集成功能,例如多文件上傳功能、使用Servlet監聽器初始化一個IoC容器以及Web應用上下文
  • spring-webmvc:也稱為Web-Servlet模塊,包含用於Web應用程序的Spring MVC和REST Web Services實現。Spring MVC框架提供了領域模型代碼和Web表單之間的清晰分離,冰雨Spring Framework的所有其他功能集成
  • Portlet模塊:類似於Servlet模塊的功能,提供了Portlet環境下MVC的實現。
  • spring-websocket模塊:Spring4.0 以后新增的模塊,它提供了WebSocket和SoeketJS的實現

6、測試

  spring-test模塊:支持使用JUnit或TestNG對Spring組件進行單元測試和集成測試。

 

參考:


 

https://www.jianshu.com/p/d3233d6322ef

https://www.cnblogs.com/jpwz/p/10556012.html

https://www.cnblogs.com/ysocean/p/7466191.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM