1 適合人羣web
本系列文章適合對Spring框架有使用經驗的技術人員,或者對Spring有必定了解的初學者。spring
2 Spring的目標是什麼?express
Spring官方主頁(http://spring.io)有兩句話:編程
- Let's build a better Enterprise.
- 咱們共同來構建更好的企業應用。
- Spring helps development teams everywhere build simple, portable, fast and flexible JVM-based systems and applications.
- Spring幫助全世界的開發團隊構建簡單、便攜、快速和靈活的基於JVM的系統和應用。
這兩句話已經足以說明Spring的目標,它針對的領域是企業應用,這套框架構建的應用有着簡單、便攜、快速和靈活的特色。與EJB(Enterprise JavaBean,一個基於Java平臺的服務端組件框架)相比,它是一個輕量級的應用開發平臺。設計模式
3 認識Springtomcat
Spring是一個企業級應用開發平臺,到目前爲止,圍繞它有一個較爲完整且成熟的應用開發生態圈,在這個生態圈中,除了Spring核心項目之外,還有不少子項目。所以,理論上,可使用Spring的生態圈技術來開發一套完整的應用系統。服務器
儘管JDK提供了豐富的開發功能,可是它很難將一些基礎的組件塊構建成一個完整的框架,它把這個任務交給了開發者和工程師。儘管開發人員能夠利用工廠、抽象工廠、建立者、裝飾器等設計模式將這些組件組合起來,可是其中的工做量是至關巨大的,特別是對於中小企業來講,根本沒有那麼多資源來作這件事情。而Spring框架已經幫咱們作好了這一切,Spring框架的控制反轉(IoC, Inversion of Control)組件以標準化的方式將這些分散的組件組合到一塊兒,Spring使用了規範的設計模式,很容易將它集成到應用系統中。當前,大量的企業和機構在使用Spring框架。websocket
4 Spring的模塊架構
如上圖所示,Spring由20多個模塊組成,它們能夠分爲核心容器(Core Container)、數據訪問/集成(Data Access/Integration)、Web、面向切面編程(AOP, Aspect Oriented Programming)、設備(Instrumentation)、消息發送(Messaging)和測試(Test)。
4.1 核心容器
核心容器包含spring-core、spring-beans、spring-context、spring-context-support和spring-expression (Spring Expression Language,Spring表達式語音)這些模塊。
spring-core和spring-beans構成了框架最基礎的部分,包括控制反轉和依賴注入功能。BeanFactory是工廠模式的一個很成熟的實現。
spring-context是基於spring-core和spring-beans構建的,它提供了一種以框架風格來訪問對象的方式,相似於JNDI註冊。ApplicationContext接口是spring-context的焦點。spring-context-support爲集成第三方庫(如定時器Quartz)提供支持。spring-expression提供了一種強大的表達式語言,能夠在運行時查詢和操做對象。
4.2 AOP和設備
spring-aop模塊提供了一個AOP面向切面編程的實現。好比,容許開發者定義方法攔截器和切入點,以此來將業務邏輯和系統服務進行解耦。
spring-aspects模塊提供與AspectJ的集成。
spring-instrument模塊提供了在普通應用服務器中使用到的類設備支持和加載器實現。spring-instrument-tomcat模塊包含了Spring的Tomcat設備代理。
4.3 消息發送
Spring 4包含了一個spring-messaging模塊,它對Spring集成項目Message、MessageChannel和MessageHandler進行了重要的抽象,它是基於消息發送應用的基礎。
4.4 數據訪問/集成
數據訪問/集成層包含JDBC(spring-jdbc)、ORM(spring-orm)、OXM(spring-oxm)、JMS(spring-jms)和事務(spring-tx)模塊。
4.5 Web
Web層包含spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet模塊。其中,spring-web提供了面向Web集成的基本特性,好比文件上傳功能。Spring-webmvc模塊包含了Spring的MVC和REST Web Service實現。Spring-webmvc-portlet模塊提供了在Portlet環境下的MVC實現。
4.6 測試
Spring-test模塊支持Spring組建JUnit和TestNG的單元測試和集成測試。
5 爲什麼使用Spring?
Spring的IOC和AOP兩大核心功能能夠大大下降應用系統的耦合性、簡化開發流程。
Spring框架技術可在不一樣層次上起做用,好比IOC管理普通的POJO對象、AOP加強了系統服務和其它組件(事務、MVC、JDBC、ORM和遠程調用等)。Spring的一大特色就是基於接口編程,它是非侵入式的服務。用戶端綁定接口使用JAVA EE服務,而非直接綁定服務,並且應用也可使用不一樣的服務(Hibernate、MyBatis等)。咱們能夠根據本身的須要,使用Spring的一部分服務,而沒必要使用完整的Spring系列項目。