Spring 是由 Rod Johnson 組織和開發的一個分層的 Java SE/EE fu stack (一站式)輕量級開源框架,它以 loC ( Inversion of Control ,控制反轉)和 AOP ( Aspect Oriented Programming , 面向切面編程)爲內核,使用基本的 JavaBean 來完成之前只可能由 EJB(Enterprise Java Beans,Java 企業 Bean) 完成的工做,取代了 EJB 的臃腫低效的開發模式web
Spring 具備簡單、可測試和鬆輯合等特色數據庫
Spring 是一種非侵入式 non-invasive )框架,它可使應用程序代碼對框架的依賴最小化express
Spring 就是一個大工廠,能夠將全部對象的建立和依賴關係的維護工做都交給 Spring 容器管理,大大地下降了組件之間的搞合性編程
Spring 提供了對 AOP 的支持,它容許將一些通用任務,如安全 事務 曰志等進行集中式處理,從而提升了程序的複用性數組
只須要經過配置就能夠完成對事務的管理,而無須手動編程緩存
Spring 提供了對 Junit4 的支持,能夠經過註解方便地測試 Spring 程序安全
Spring 不排斥各類優秀的開源框架,其內部提供了對各類優秀框架(如 Struts Hibernate、MyBatis Quartz 等)的直接支持服務器
Spring Java EE 開發中很是難用的一些 API (如 JDBC JavaMail 等),都提供了封裝,使這些 API 應用難度大大websocket
Spring體系結構以下圖:
mvc
Spring的核心容器是其餘模塊創建的基礎,有Spring-core、Spring-beans、Spring-context、Spring-context-support和Spring-expression(String表達式語言)等模塊組成。
提供了框架的基本組成部分,包括控制反轉(Inversion of Control,IOC)和依賴注入(Dependency Injection,DI)功能。
提供了BeanFactory,是工廠模式的一個經典實現,Spring將管理對象稱爲Bean。
創建在Core和Beans模塊的基礎之上,提供一個框架式的對象訪問方式,是訪問定義和配置的任何對象的媒介。ApplicationContext接口是Context模塊的焦點。
支持整合第三方庫到Spring應用程序上下文,特別是用於高速緩存(EhCache、JCache)和任務調度(CommonJ、Quartz)的支持。
提供了強大的表達式語言去支持運行時查詢和操做對象圖。這是對JSP2.1規範中規定的統一表達式語言(Unified EL)的擴展。該語言支持設置和獲取屬性值、屬性分配、方法調用、訪問數組、集合和索引器的內容、邏輯和算術運算、變量命名以及從Spring的IOC容器中以名稱檢索對象。它還支持列表投影、選擇以及經常使用的列表聚合。
提供了一個符合AOP要求的面向切面的編程實現,容許定義方法攔截器和切入點,將代碼按照功能進行分離,以便乾淨地解耦。
提供了與AspectJ的集成功能,AspectJ是一個功能強大且成熟的AOP框架
提供了類植入(Instrumentation)支持和類加載器的實現,能夠在特定的應用服務器中使用。
支持使用JUnit或TestNG對Spring組件進行單元測試和集成測試。
Spring4.0之後新增了消息(Spring-messaging)模塊,該模塊提供了對消息傳遞體系結構和協議的支持。
數據訪問/集成層由JDBC、ORM、OXM、JMS和事務模塊組成。
提供了一個JDBC的抽象層,消除了煩瑣的JDBC編碼和數據庫廠商特有的錯誤代碼解析。
爲流行的對象關係映射(Object-Relational Mapping)API提供集成層,包括JPA和Hibernate。使用Spring-orm模塊能夠將這些O/R映射框架與Spring提供的全部其餘功能結合使用,例如聲明式事務管理功能。
提供了一個支持對象/XML映射的抽象層實現,例如JAXB、Castor、JiBX和XStream。
指Java消息傳遞服務,包含用於生產和使用消息的功能。自Spring4.1之後,提供了與Spring-messaging模塊的集成。
支持用於實現特殊接口和全部POJO(普通Java對象)類的編程和聲明式事務管理。
Web層由Spring-web、Spring-webmvc、Spring-websocket和Portlet模塊組成。
提供了基本的Web開發集成功能,例如多文件上傳功能、使用Servlet監聽器初始化一個IOC容器以及Web應用上下文。
也稱爲Web-Servlet模塊,包含用於web應用程序的Spring MVC和REST Web Services實現。
Spring4.0之後新增的模塊,它提供了WebSocket和SocketJS的實現。
相似於Servlet模塊的功能,提供了Portlet環境下的MVC實現。