1. 程式人生 > >Spring(一)---Spring概述

Spring(一)---Spring概述

(一)Spring是什麼?
· Spring 為簡化企業級應用開發而生. 使用 Spring 可以使簡單的 JavaBean 實現以前只有 EJB 才能實現的功能.
· 具體描述 Spring:

  • 輕量級:Spring 是非侵入性的 - 基於 Spring 開發的應用中的物件可以不依賴於 Spring 的 API;
  • 依賴注入(DI — dependency injection、IOC);
  • 面向切面程式設計(AOP — aspect oriented programming);
  • 容器: Spring 是一個容器, 因為它包含並且管理應用物件的生命週期;
  • 框架: Spring 實現了使用簡單的元件配置組合成一個複雜的應用. 在 Spring 中可以使用 XML 和 Java 註解組合這些物件;
  • 一站式:在 IOC 和 AOP 的基礎上可以整合各種企業應用的開源框架和優秀的第三方類庫 (實際上 Spring 自身也提供了展現層的 SpringMVC 和 持久層的 Spring JDBC);
    (二)Spring如何降低Java開發的複雜性
    為了降低Java開發的複雜性,Spring採取了一下四種策略:
  • 基於POJO的輕量級和最小侵入式程式設計;
  • 通過依賴注入和麵向介面實現鬆耦合;
  • 基於慣例和切面進行宣告式程式設計;
  • 通過切面和模板減少樣板式程式碼;
    (三)Spring模組
    這裡寫圖片描述
    這些模組依據其所屬的功能可以劃分為6類不同的功能,如下圖所示:
    這裡寫圖片描述
    讓我們逐一瀏覽Spring的模組,看看它們是如何構建起Spring整體藍圖的.
    Spring核心容器
  • 容器是Spring框架最核心的部分,它管理著Spring應用中bean的建立,配置和管理.在該模組中,包括了Spring工廠,它為Spring提供了DI功能.基於bean工廠,我們還會發現有多種Spring應用上下文的實現,每一種都提供了配置Spring的不同方式.
  • 除了Bean工廠和應用上下文,該模組也提供了許多企業服務,例如E-mail,JNDI訪問,EJB整合和排程.所有的Spring模組都構建於核心容器之上.
    資料訪問與整合
  • 使用JDBC編寫程式碼通常會導致大量的樣板式程式碼,例如獲得資料庫的連線,建立語句,處理結果集到最後關閉資料庫連線.Spring的JDBC和DAO(Data AccessObject)模組抽象了這些樣板式程式碼,使我們的資料庫程式碼變得簡單明瞭,還可以避免因為關閉資料庫連線而引發的問題.該模組在多種資料庫服務的錯誤訊息之上構建了一個語義豐富的異常層,以後再也不需要解釋那些隱晦專有的SQL錯誤訊息了!
  • 對於那些更喜歡ORM(Object Relational Mapping)工具而不願意直接使用JDBC的開發者,Spring提供了ORM模組.Spring的ORM模組建立在對DAO的支援之上,併為多個ORM框架提供了一種構建DAO的簡便方式.Spring沒有嘗試去建立自己的ORM解決方案,而是對許多流行的ORM框架進行了整合,包括Hibernate,Java Persisterence API(JPA),Java Data Object和iBATIS SQL Maps.Spring的 事物管理支援所有的ORM框架以及JDBC.
  • 本模組同樣包含了在JMS(Java Message Service)之上構建的Spring抽象層,它會使用訊息以非同步的方式與其他應用整合.從Spring 3.0開始,本模組還包含物件到XML對映的特性,它最初是Spring Web Service專案的一部分.
  • 除此之外,本模組會使用Spring AOP模組為Spring應用中的物件提供事物管理服務.
    Web與遠端呼叫

  • MVC(Model-View-Controller)模式是一種普遍被接受的構建Web應用的方法,它可以幫助使用者將介面邏輯與應用邏輯分離。Java有許多MVC框架,如Apache的Struts,JSF,WebWork和Tappestry等.雖然Spring能夠與多種流行的MVC框架進行整合,但它的web和遠端呼叫模組自帶了一個強大的MVC框架,有助於在web層提升應用的鬆耦合水平.

  • 除了面向使用者的web應用,該模組還提供了多種建立與其他應用互動的遠端呼叫方案.Spring遠端呼叫功能集成了RMI(Remote Method Invocation),Hessian,Burlap,JAX-WS,同時Spring還自帶了一個遠端呼叫框架:Http invoker.Spring還提供了暴露和使用REST API的良好支援.
    Instrumentation

Spring 的Instrumentation模組提供了為JVM新增代理(agent)的功能.具體來講,它為Tomcat提供了一個織入代理,能夠為Tomcat傳遞類檔案,就像這些檔案是被類載入器載入的一樣.
測試
Spring提供了測試模組以致於Spring應用的測試.
Spring Portfolio
Spring Web Flow
- Spring Web Flow的主頁(http://projects.spring.io/Spring-webflow)

Spring Web Service

Spring Security
利用Spring AOP,Spring Security 為Spring應用提供了宣告式的安全機制.
Spring Integration

  • Spring Integration提供了多種通用應用整合模式的Spring宣告式風格實現

Spring Batch

  • 開發一個批處理應用,你可以通過Spring Batch,使用Spring強大的面向POJO的程式設計模型.
    Spring Data
    Spring Data使得在Spring中使用任何資料庫都變得非常容易.
    Spring Social
    Spring的一個社交網路擴充套件模組
    Spring Mobile
    Spring Mobile是Spring MVC新的擴充套件模組,用於支援移動web應用開發.
    Spring for Android
    Spring Boot