?
下面這部分摘抄自Spring In Action書的p4-p6---------------------------------
核心容器
圖 1.1 的最底層是核心容器。 Spring 核心容器為 Spring 框架提供了基礎功能。在這個模塊中你會找到 BeanFactory 這個類,它是最基本的 Spring 容器和 Spring 的 DI 所依賴的基礎。
從第 2 章開始,貫穿整本書,當遇到使用 DI 來裝配 Bean 的時候,我們都會討論核心模塊 ( 任何 Spring 應用的核心 ) 。
Application Context( 上下文 ) 模塊
Spring 的應用上下文建立在核心容器之上。 BeanFactory 使 Spring 成為容器,而上下文使 Spring 成為框架。這個模塊擴展了 BeanFactory ,添加了對 I18N( 國際化 ) 、應用生命周期事件以及驗證的支持。
另外,這個模塊提供了很多企業級服務,如電子郵件服務、 JNDI 訪問、 EJB 集成、遠程調用以及定時服務,并且支持與模板框架 ( 如 Velocity 和 FreeMarker) 的集成。
Spring 的 AOP 模塊
在 AOP 模塊中, Spring 對面向切面編程提供了豐富的支持。這個模塊是為 Spring 應用開發切面的基礎。與 DI 一樣, AOP 支持應用對象之間的松耦合。利用 AOP ,應用程序所關心的與其應用的對象關系不大。
Spring 的 AOP 模塊提供了多種方法來建立切面,包括基于 AOP Alliance 接口 (http://aopalliance.sf.net) 的切面的建立和對 AspectJ 的支持。第 4 章將深入討論 Spring 的 AOP 支持。
JDBC 抽象及 DAO 模塊
Spring 的 JDBC 和 DAO 模塊把要寫的樣板代碼抽象出來,讓你的數據庫代碼變得簡單明了,也可以避免因為釋放數據庫資源失敗而引起的問題。這個模塊還建立了一個容易理解的數據庫異常層,它建立在各種數據庫錯誤信息之上。以后就不用再去解釋那些隱晦專有的 SQL 錯誤信息了。
另外,這個模塊利用 Spring 的 AOP 模塊為 Spring 應用中的對象提供事務管理服務。
在第 5 章中討論 Spring 數據訪問時,我們將看到 Spring 的基于模板的 JDBC 抽象層是如何簡化 JDBC 代碼的。
ORM 映射集成模塊
Spring 為那些喜歡使用 ORM(Object-relational mapping) 工具的開發人員提供了 ORM 模塊。 Spring 的 ORM 支持建立在 DAO 支持之上,并可以方便地構建適合幾個 ORM 解決方案的 DAO 。 Spring 不想實現自己的 ORM 解決方案,但是它為許多流行的 ORM 框架做了鉤子程序,包括 Hibernate 、 Java Persistence API 、 JDO 和 iBATIS SQL 映射。 Spring 的事務管理支持所有這些 ORM 框架以及 JDBC 。
Spring 除了提供基于模板的 JDBC 抽象,還提供了類似的 ORM 抽象和永久的框架,這些內容將在第 5 章討論。
Java 管理擴展 (JMX)
如何方便地展現 Java 應用的內存工作流以便于管理,這是構建應用產品準備的關鍵部分。 Spring 的 JMX 模塊可以方便地展現應用 Bean ,就像 JMX Mbeans 。這樣一來,就可以監控和重新配置運行中的應用程序。
我們將在第 12 章詳細討論 Spring 的 JMX 支持。
Java EE 連接器 API(JCA)
企業級應用包括運行在不同服務器和平臺上的應用。集成這些應用程序需要一些技巧。 Java EE 連接 API( 也稱為 JCA) 提供了一種標準的方法來集成 Java 應用和多種企業信息系統,包括主框架和數據庫。
JCA 很多方面與 JDBC 一樣,唯一的區別是 JDBC 主要是針對數據庫訪問,而 JCA 更多是關注連接遺留系統的通用 API 。 Spring 對 JCA 的支持類似于其對 JDBC 的支持,提取出 JCA 的樣本代碼插入到模板中。
Spring MVC 框架
Spring 為 Web 應用提供了全功能的 MVC(Model/View?Controller) 框架,比如用戶界面與應用邏輯是分離的。 Java 有很多類 MVC 框架可選擇,例如 Apache Struts 、 JSF 、 WebWork 和 Tapestry 。
雖然 Spring 可以集成多種其他 MVC 框架,但是 Spring 也提供了自己的 MVC 框架,它改進了 Spring 在應用 Web 層的松耦合技術。
在第 13 章和第 14 章,我們將深入討論 Spring MVC 。
Spring Portlet MVC
多數 Web 應用都是基于頁面的――也就是說,每個對應用的請求都會實現一個完全新的頁面。每個頁面都呈現特定的信息或特定的表單來提示用戶。基于 portlet 的應用在一個 Web 頁面上聚集多個功能,這樣在一個頁面中一次就可以提供多個應用。
如果想創建基于 portlet 的應用,最好是利用 Spring 的 Portlet MVC 框架。 Spring Portlet MVC 建立在 Spring MVC 基礎上,提供了一套控制器來支持 Java portlet API 。
Spring 的 Web 模塊
當裝載 Spring 應用上下文時, Spring MVC 和 Spring Portlet MVC 需要一些特殊的考慮。 Spring 的 Web 模塊提供了支持 Spring MVC 和 Spring Portlet MVC 的類。
Web 模塊還提供了幾個支持面向 Web 的任務,例如多部分 文件上傳 和編程綁定到業務對象的請求參數。它還包含了對 Apache Struts 和 Java Server Faces(JSF) 的集成支持。
遠程調用
所有應用都不是孤立的。通常,一個應用必須利用另一個應用的某些功能。當通過網絡來訪問其他應用時,某些形式的遠程調用將被用于通訊。
Spring 的遠程調用允許將 Java 對象的某些功能展現為遠程對象。如果需要遠程訪問對象,遠程調用模塊會使編寫遠程對象很簡單,就像它們是本地 POJO 一樣。有一些遠程調用選項,包括 RMI(Remote Method Invocation ,遠程方法調用 ) 、 Hessian 、 Burlap 、 JAX-RPC 和 Spring 自己的 HTTP Invoker 。
在第 8 章中,我們將詳細討論 Spring 中的多種遠程調用選項。
Java 消息服務 (JMS)
遠程調用是鄧決于網絡可靠性和通訊雙方的可用性。基于消息的通訊是可靠的,并且即使在網絡和端點不可用時,可以保證消息的傳遞。
Spring 的 Java 消息服務 (Java Message Service) 模塊可以將消息發送到 JMS 隊列和主題。同時,這個模塊還能幫助創建消息驅動的 POJO ,它能夠處理異步消息。在第 10 章,我們將詳細討論 Spring 的消息發送機制。
雖然 Spring 包括很多內容,但是最重要的是要認識到 Spring 盡可能避免了重新開發所有事情。 Spring 傾向于保留現有的 API 和框架。
上面這部分摘抄自Spring In Action書的p4-p6---------------------------------
?
第一章 開始 Spring 之旅
-
DI 的作用是將程序解耦。程序 A 在調用程序 B/C 時,不需要知道 B/C 是如何來的,只需要按照接口定義使用即可。 PS :之前的 service+ 簡單工廠方法也可達到這個效果。但 spring 可在 XML 中配置。
-
AOP 的信用有點類似代理模式。 AOP 可以在類 A 不知情的情況下,為 A 增加新的功能。與代理模式不同, AOP 是在 XML 中配置的。
第二章 基本Bean裝配
-
Spring的容器有多種容器實現。分兩類:1、Bean工廠;2、應用上下文。Bean工廠簡單,提供了基礎的依賴注入支持。應用上下文則比Bean工廠更高級。
- 提供文本信息解析工具,包括對國際化支持。
- 提供載入文件資源的通用法。
-
可向注冊為監聽器的Bean發送事件。
- Bean有自動裝配屬性功能、awtowire、可以byName、byType…..但這會導致XML文件的可續性降低。
- 關于Bean的范圍,請參考下表。
?
范圍 | 完成任務 |
singleton | 定義Bean的范圍為每個Spring容器一個實例(默認值) |
prototype | 允許Bean可以被多次實例化(使用一次就創建一個實例) |
request | 定義Bean的范圍是HTTP請求。只有在使用有Web能力的Spring上下文(例如Spring MVC)時才有效 |
session | 定義Bean的范圍是HTTP會話。只有在使用有Web能力的Spring上下文(例如Spring MVC)時才有效 |
global-session | 定義Bean的范圍是全局HTTP會話。只有在portlet上下文中才有效 |
?
?
?
?
?
?
?
?
?
?
?
?
?
第三章 高級Bean裝配(跳過)
第四章 通知Bean
-
AOP述語包括①通知(AOP切面的功能和切面執行任務的時機);②連接點、(AOP涉足其它對象的切入點);③切入點(對象的被介入的具體地方);④切面=通知+切入點;⑤引入(可為現有Bean)引入另一個類的某個方法;⑥目標(AOP要介入的對象);⑦代理(user通過代理來調用目標);⑧織入(將目標與代理連接起來的過程)
為了更好的了解AOP的這些名詞,借助書本上的例子來幫助記憶。例子是電廠派抄表工查某一片區用戶的用電情況。如下圖: -
目前的AOP框架有3個:
- AspectJ(可以對屬性和構造 數的切入) (推薦使用的)
- JBoss AOP
-
Spring AOP
-
Spring生成被代理類的方法有兩種:
- 如果目標類實現了一個接口、則使用java.lang.reflect.proxy類來為目標類織入通知(優先)
- 如果是普通類、則通過生成它的子類、達到代理的目的;(參代理模式)
????? 前面的方法設置麻煩,且對被代理的Bean(切入點所處的Bean)要求高(需花實現指定的Proxy Factory Beam).于是導致了自動代理的出現。
自動代理中、Java1.5以后的版本,有“自動代理@Aspect J切面:簡單易用、對被代理的Beam沒有入侵。將切面加在一個切面類和配置中(caop:conf:g>)。詳細方法這里不說了。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
