一.Spring 簡介html
二.結構體系web
三.七大主要模塊spring
五 .Sprinf framework express
spring是一個開源的輕量級的應用開發框架,它提供了IOC(Inversion of Control控制反轉)和AOP(Aspect -Oriented Programming 面向切面編程)的應用,能夠減小組件之間的耦合度,即解耦,spring容器能夠建立對象而且管理對象之間的關係,控制反轉能夠經過依賴注入來實現。數組
概述 Spring 是最受歡迎的企業級 Java 應用程序開發框架,數以百萬的來自世界各地的開發人員使用 Spring 框架來建立性能好、易於測試、可重用的代碼。 Spring 框架是一個開源的 Java 平臺,它最初是由 Rod Johnson 編寫的,而且於 2003 年 6 月首次在 Apache 2.0 許可下發布。 Spring 是輕量級的框架,其基礎版本只有 2 MB 左右的大小。 Spring 框架的核心特性是能夠用於開發任何 Java 應用程序,可是在 Java EE 平臺上構建 web 應用程序是須要擴展的。 Spring 框架的目標是使 J2EE 開發變得更容易使用,經過啓用基於 POJO 編程模型來促進良好的編程實踐。 使用 Spring 框架的好處 下面列出的是使用 Spring 框架主要的好處: Spring 可使開發人員使用 POJOs 開發企業級的應用程序。只使用 POJOs 的好處是你不須要一個 EJB 容器產品,好比一個應用程序服務器,可是你能夠選擇使用一個健壯的 servlet 容器,好比 Tomcat 或者一些商業產品。 Spring 在一個單元模式中是有組織的。即便包和類的數量很是大,你只要擔憂你須要的,而其它的就能夠忽略了。 Spring 不會讓你白費力氣作重複工做,它真正的利用了一些現有的技術,像ORM 框架、日誌框架、JEE、Quartz 和 JDK 計時器,其餘視圖技術。 測試一個用 Spring 編寫的應用程序很容易,由於環境相關的代碼被移動到這個框架中。此外,經過使用 JavaBean-style POJOs,它在使用依賴注入注入測試數據時變得更容易。 Spring 的 web 框架是一個設計良好的 web MVC 框架,它爲好比 Structs 或者其餘工程上的或者不怎麼受歡迎的 web 框架提供了一個很好的供替代的選擇。 Spring 對JavaEE開發中很是難用的一些API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些API應用難度大大下降。 輕量級的 IOC 容器每每是輕量級的,例如,特別是當與 EJB 容器相比的時候。這有利於在內存和 CPU 資源有限的計算機上開發和部署應用程序。 Spring提供了一致的事務管理接口,可向下擴展到(使用一個單一的數據庫,例如)本地事務並擴展到全局事務(例如,使用 JTA)。 依賴注入(DI) Spring 最認同的技術是控制反轉的依賴注入(DI)模式。控制反轉(IoC)是一個通用的概念,它能夠用許多不一樣的方式去表達,依賴注入僅僅是控制反轉的一個具體的例子。 當編寫一個複雜的 Java 應用程序時,應用程序類應該儘量的獨立於其餘的 Java 類來增長這些類可重用可能性,當進行單元測試時,可使它們獨立於其餘類進行測試。依賴注入(或者有時被稱爲配線)有助於將這些類粘合在一塊兒,而且在同一時間讓它們保持獨立。 到底什麼是依賴注入?讓咱們將這兩個詞分開來看一看。這裏將依賴關係部分轉化爲兩個類之間的關聯。例如,類 A 依賴於類 B。如今,讓咱們看一看第二部分,注入。全部這一切都意味着類 B 將經過 IoC 被注入到類 A 中。 依賴注入能夠以向構造函數傳遞參數的方式發生,或者經過使用 setter 方法 post-construction。因爲依賴注入是 Spring 框架的核心部分,因此我將在一個單獨的章節中利用很好的例子去解釋這一律念。 面向方面的程序設計(AOP): Spring 框架的一個關鍵組件是面向方面的程序設計(AOP)框架。一個程序中跨越多個點的功能被稱爲橫切關注點,這些橫切關注點在概念上獨立於應用程序的業務邏輯。有各類各樣常見的很好的關於方面的例子,好比日誌記錄、聲明性事務、安全性,和緩存等等。 在 OOP 中模塊化的關鍵單元是類,而在 AOP 中模塊化的關鍵單元是方面。AOP 幫助你將橫切關注點從它們所影響的對象中分離出來,然而依賴注入幫助你將你的應用程序對象從彼此中分離出來。 Spring 框架的 AOP 模塊提供了面向方面的程序設計實現,能夠定義諸如方法攔截器和切入點等,從而使實現功能的代碼完全的解耦出來。使用源碼級的元數據,能夠用相似於.Net屬性的方式合併行爲信息到代碼中。我將在一個獨立的章節中討論更多關於 Spring AOP 的概念。
1.體系結構 安全
Spring 有可能成爲全部企業應用程序的一站式服務點,然而,Spring 是模塊化的,容許你挑選和選擇適用於你的模塊,沒必要要把剩餘部分也引入。下面的部分對在 Spring 框架中全部可用的模塊給出了詳細的介紹。Spring 框架提供約 20 個模塊,能夠根據應用程序的要求來使用。服務器
核心容器由spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring表達式語言,Spring Expression Language)等模塊組成,它們的細節以下:
spring-core模塊提供了框架的基本組成部分,包括 IoC 和依賴注入功能。 spring-beans 模塊提供 BeanFactory,工廠模式的微妙實現,它移除了編碼式單例的須要,而且能夠把配置和依賴從實際編碼邏輯中解耦。 context模塊創建在由core和 beans 模塊的基礎上創建起來的,它以一種相似於JNDI註冊的方式訪問對象。Context模塊繼承自Bean模塊,而且添加了國際化(好比,使用資源束)、事件傳播、資源加載和透明地建立上下文(好比,經過Servelet容器)等功能。Context模塊也支持Java EE的功能,好比EJB、JMX和遠程調用等。ApplicationContext接口是Context模塊的焦點。spring-context-support提供了對第三方庫集成到Spring上下文的支持,好比緩存(EhCache, Guava, JCache)、郵件(JavaMail)、調度(CommonJ, Quartz)、模板引擎(FreeMarker, JasperReports, Velocity)等。 spring-expression模塊提供了強大的表達式語言,用於在運行時查詢和操做對象圖。它是JSP2.1規範中定義的統一表達式語言的擴展,支持set和get屬性值、屬性賦值、方法調用、訪問數組集合及索引的內容、邏輯算術運算、命名變量、經過名字從Spring IoC容器檢索對象,還支持列表的投影、選擇以及聚合等。
數據訪問/集成層包括 JDBC,ORM,OXM,JMS 和事務處理模塊,它們的細節以下:
(注:JDBC=Java Data Base Connectivity,ORM=Object Relational Mapping,OXM=Object XML Mapping,JMS=Java Message Service) JDBC 模塊提供了JDBC抽象層,它消除了冗長的JDBC編碼和對數據庫供應商特定錯誤代碼的解析。 ORM 模塊提供了對流行的對象關係映射API的集成,包括JPA、JDO和Hibernate等。經過此模塊可讓這些ORM框架和spring的其它功能整合,好比前面說起的事務管理。 OXM 模塊提供了對OXM實現的支持,好比JAXB、Castor、XML Beans、JiBX、XStream等。 JMS 模塊包含生產(produce)和消費(consume)消息的功能。從Spring 4.1開始,集成了spring-messaging模塊。。 事務模塊爲實現特殊接口類及全部的 POJO 支持編程式和聲明式事務管理。(注:編程式事務須要本身寫beginTransaction()、commit()、rollback()等事務管理方法,聲明式事務是經過註解或配置由spring自動處理,編程式事務粒度更細)
4.Web
Web 層由 Web,Web-MVC,Web-Socket 和 Web-Portlet 組成,它們的細節以下:
Web 模塊提供面向web的基本功能和麪向web的應用上下文,好比多部分(multipart)文件上傳功能、使用Servlet監聽器初始化IoC容器等。它還包括HTTP客戶端以及Spring遠程調用中與web相關的部分。。 Web-MVC 模塊爲web應用提供了模型視圖控制(MVC)和REST Web服務的實現。Spring的MVC框架可使領域模型代碼和web表單徹底地分離,且能夠與Spring框架的其它全部功能進行集成。 Web-Socket 模塊爲 WebSocket-based 提供了支持,並且在 web 應用程序中提供了客戶端和服務器端之間通訊的兩種方式。 Web-Portlet 模塊提供了用於Portlet環境的MVC實現,並反映了spring-webmvc模塊的功能。 其餘
5.還有其餘一些重要的模塊,像 AOP,Aspects,Instrumentation,Web 和測試模塊,它們的細節以下:
AOP 模塊提供了面向方面的編程實現,容許你定義方法攔截器和切入點對代碼進行乾淨地解耦,從而使實現功能的代碼完全的解耦出來。使用源碼級的元數據,能夠用相似於.Net屬性的方式合併行爲信息到代碼中。
Aspects 模塊提供了與 AspectJ 的集成,這是一個功能強大且成熟的面向切面編程(AOP)框架。
Instrumentation 模塊在必定的應用服務器中提供了類 instrumentation 的支持和類加載器的實現。
Messaging 模塊爲 STOMP 提供了支持做爲在應用程序中 WebSocket 子協議的使用。它也支持一個註解編程模型,它是爲了選路和處理來自 WebSocket 客戶端的 STOMP 信息。
測試模塊支持對具備 JUnit 或 TestNG 框架的 Spring 組件的測試。
三.七大主要模塊
http://www.javashuo.com/article/p-bxscuxlc-bv.html