天天看點

Spring基礎

1.2.1 spring架構圖

Spring基礎

核心容器:包括core、beans、context、el子產品。

●core子產品:封裝了架構依賴的最底層部分,包括資源通路、類型轉換及一些常用工具類。

●beans子產品:提供了架構的基礎部分,包括反轉控制和依賴注入。其中bean factory是容器核心,本質是“工廠設計模式”的實作,而且無需程式設計實作“單例設計模式”,單例完全由容器控制,而且提倡面向接口程式設計,而非面向實作程式設計;所有應用程式對象及對象間關系由架構管理,進而真正把你從程式邏輯中把維護對象之間的依賴關系提取出來,所有這些依賴關系都由beanfactory來維護。

●context子產品:以core和beans為基礎,內建beans子產品功能并添加資源綁定、資料驗證、國際化、java ee支援、容器生命周期、事件傳播等;核心接口是applicationcontext。

●el子產品:提供強大的表達式語言支援,支援通路和修改屬性值,方法調用,支援通路及修改數組、容器和索引器,命名變量,支援算數和邏輯運算,支援從spring 容器擷取bean,它也支援清單投影、選擇和一般的清單聚合等。

aop、aspects子產品:

●aop子產品:spring aop子產品提供了符合 aop alliance規範的面向方面的程式設計(aspect-oriented programming)實作,提供比如日志記錄、權限控制、性能統計等通用功能和業務邏輯分離的技術,并且能動态的把這些功能添加到需要的代碼中;這樣各專其職,降低業務邏輯和通用功能的耦合。

●aspects子產品:提供了對aspectj(aspectj是一個面向切面的架構,它擴充了java語言)的內建,aspectj提供了比spring asp更強大的功能。

資料通路/內建子產品:該子產品包括了jdbc、orm、oxm、jms和事務管理。

●事務子產品:該子產品用于spring管理事務,隻要是spring管理對象都能得到spring管理事務的好處,無需在代碼中進行事務控制了,而且支援程式設計和聲明性的事物管理。

●jdbc子產品:提供了一個jbdc的樣例模闆,使用這些模闆能消除傳統冗長的jdbc編碼還有必須的事務控制,而且能享受到spring管理事務的好處。

●orm子產品:提供與流行的“對象-關系”映射架構的無縫內建,包括hibernate、jpa、ibatiss等。而且可以使用spring事務管理,無需額外控制事務。

●oxm子產品:提供了一個對object/xml映射實作,将java對象映射成xml資料,或者将xml資料映射成java對象,object/xml映射實作包括jaxb、castor、xmlbeans和xstream。

●jms子產品:用于jms(java messaging service),提供一套 “消息生産者、消息消費者”模闆用于更加簡單的使用jms,jms用于用于在兩個應用程式之間,或分布式系統中發送消息,進行異步通信。

●web/remoting子產品:web/remoting子產品包含了web、web-servlet、web-struts、web-porlet子產品。

●web子產品:提供了基礎的web功能。例如多檔案上傳、內建ioc容器、遠端過程通路(rmi、hessian、burlap)以及web service支援,并提供一個resttemplate類來提供友善的restful services通路。

●web-servlet子產品:提供了一個spring mvc web架構實作。spring mvc架構提供了基于注解的請求資源注入、更簡單的資料綁定、資料驗證等及一套非常易用的jsp标簽,完全無縫與spring其他技術協作。

●web-struts子產品:提供了與struts無縫內建,struts1.x 和struts2.x都支援

test子產品: spring支援junit和testng測試架構,而且還額外提供了一些基于spring的測試功能,比如在測試web架構時,模拟http請求的功能。

1.2.2 典型應用場景

spring可以應用到許多場景,從最簡單的标準java se程式到企業級應用程式都能使用spring來建構。以下介紹幾個比較流行的應用場景:

●典型web應用程式應用場景:

Spring基礎

在web應用程式應用場景中,典型的三層架構:資料模型層實作域對象(pojo);資料通路層實作資料通路(dao);邏輯層實作業務邏輯(service);web層提供頁面展示(action);所有這些層元件都由spring進行管理,享受到spring事務管理、aop等好處,而且請求唯一入口就是dispachterservlet,它通過把請求映射為相應web層元件來實作相應請求功能。

●遠端通路應用場景:

spring能非常友善的提供暴露rmi服務,遠端通路服務如hessian、burlap等,實作非常簡單隻需通過在spring中配置相應的位址及需要暴露的服務即可輕松實作,後邊會有介紹;

●ejb應用場景:

spring也可以與ejb輕松內建,後邊會詳細介紹。

---------------------------------------------------------------------------------

blog:http://www.cnblogs.com/linjiqin/

hadoop交流群(250363249)、java+oracle交流群(158560018)

題外話:

本人來自鐵觀音的發源地——泉州安溪,有需要正宗安溪鐵觀音的友友歡迎q我:416501600。