概覽
輕量級的企業應用開發越來越受到廣大J2EE應用開發者的追捧,而Spring框架又是輕量級容器的杰出代表。由于Spring的使用日漸廣泛,因此已有許多基于WebSphere應用服務器(WAS)的應用采用了Spring框架。本文首先介紹使用Spring開發Web應用的基本問題,然后結合WebSphere應用服務器,講述Spring應用如何結合容器提供的服務。文章目的是與大家一起探討如何更好的采用Spring框架開發基于WebSphere應用服務器的應用。
1、Spring框架的主要思想描述
Spring框架的核心思想我們可以用兩個字來描述,那就是“解耦”。應用程序的各個部分之間(包括代碼內部和代碼與平臺之間)盡量形成一種松耦合的結構,使得應用程序有更多的靈活性。應用內部的解耦主要通過一種稱為控制反轉(IOC)的技術來實現??刂品崔D的基本思想就是本來由應用程序本身來主動控制的調用等邏輯轉變成由外部配置文件來被動控制。通常我們用一個所謂的好萊塢原則(Don't call me. I will call you.)來比喻這種控制反轉的關系。由于控制反轉的概念相對比較廣泛,很多應用服務器實際上也實現了不同程度的控制反轉技術,只是這些應用服務器對應用程序的侵入性太強。因此Martin Fowler專門寫了一篇文章討論控制反轉這個概念,并提出一個描述更為準確的概念,叫依賴注入(Dependency Injection)。
Spring框架中的各個部分都充分使用了這種依賴注入的技術實現,從而給應用以最大的靈活度。實際上,這種依賴注入的參數化應用控制并不是Spring的首創,比如IBM的多渠道應用整合平臺(Branch Transformation Toolkit,BTT)很早就采用了這種外部參數化控制的技術。BTT中的“對象工廠”與Spring框架中的BeanFactory也有著異曲同工之妙。
Spring框架另外一個比較重要的技術是它對于面向切面的編程(AOP)的支持。隨著應用復雜度的逐漸上升和對應用靈活性要求的提高,IT邏輯和業務邏輯盡量分離的呼聲也越來越高。AOP技術作為實現這種分離的一種比較好的途徑而越來越受到大家的重視。Spring提供的是一種動態AOP實現,也即通過代理模式動態地在目標對象的方法前后插入相應的處理代碼。應用程序與底層應用服務器平臺的解耦也可以借助AOP技術來實現。Spring內置的AOP支持是一種錦上添花的功能。它使得一些本來必須由容器支持的功能,比如事務控制可以脫離開容器運行,從而達到"瘦身"的目的。這也是為什么Spring框架常被人成為輕量級容器的一個原因。
Spring框架可以與許多已有的框架技術結合使用。J2EE技術應用的一個重要特點是相關的開源社區非?;钴S。Web應用的不同層次都有非常多優秀的開源框架存在。比如Web層的Struts,OR映射層的Hibernate等。Spring框架并不重新發明輪子,它的出現不是為了替代這些已有的框架。相反,Spring框架在設計上可以獨立構建應用或者結合已有的框架一起構建應用。另外一個值得指出的地方是Spring框架的幾大模塊之間相互耦合度很小,因此Spring框架的使用可以根據實際需要選其部分模塊循序漸進的使用,而非必須統統照搬。
2、基于Spring的Web應用基礎
2.1 Web應用的典型層次
Web應用一般在邏輯上根據功能分為以下幾層:
1.展示層
這一層主要如何生成展示給最終用戶的界面,盡可能少的包含業務邏輯處理。對于基于J2EE的Web應用,JSP是其最為常見的一種技術。Spring對于展示層的支持非常靈活,除了直接支持JSP之外,它還支持基于FreeMarker模板,基于Velocity模板或其它文檔類型的界面等的表現層實現。
2.業務層
業務層一般包含主要的業務邏輯,尤其是與用例相對應的那些業務邏輯。另外,這一層也適合包含事務管理和安全控制方面的邏輯。良好的業務層設計可以使得展示層可以采用不同的技術而不影響業務層。業務層的功能上可以類比于J2EE技術中的無狀態會話BEAN層次。
3.數據訪問對象(DAO)接口層
DAO實際上就是數據接口層,在應用中建議通過接口來體現。DAO的存在使得數據訪問可以與底層持久化層的具體實現相分離。一般在DAO接口中主要就是實現數據對象的查詢、存儲、刪除等操作。從理論上講,DAO層與底層數據的存儲方式是獨立的,也就是說并不一定要求是關系型數據庫。Spring框架在設計的時候也考慮到了其它非關系型數據庫數據源的情況。
4.持久業務對象
持久業務對象是問題域中業務對象的持久化表示,比如一個用戶對象,一個銀行帳戶等。我們一般通過某種O/R映射技術來實現這些業務對象的持久化。持久業務對象是可以包含業務邏輯的,與業務層所包含的業務邏輯不同的地方是持久業務對象所包含的是與具體業務對象直接相關且更為通用的業務邏輯。
5.企業信息系統
企業信息系統泛指Web應用需要連接的后臺系統,一般可以分為三大類,即ERP系統,企業傳統的遺留系統和關系型數據庫。大部分Web應用都是基于關系型數據庫的,這也是像Spring等常見框架所主要考慮的企業信息系統。
設計良好的Web應用在層次一般是上一層依賴下一層,但是下一層不依賴上一層。我們可以暫時概括為"向下而不向上依賴原則"。為了使得不同層次之間的依賴降到最低,建議使用接口耦合。這一點又是Spring框架發揮它外部配置優勢的地方。
共4頁: 1 [2] [3] [4] 下一頁 |
原文轉自:http://www.anti-gravitydesign.com