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

