基于注解驅(qū)動的Struts_Spring_Hibernate開發(fā)框架_第1頁
基于注解驅(qū)動的Struts_Spring_Hibernate開發(fā)框架_第2頁
基于注解驅(qū)動的Struts_Spring_Hibernate開發(fā)框架_第3頁
基于注解驅(qū)動的Struts_Spring_Hibernate開發(fā)框架_第4頁
基于注解驅(qū)動的Struts_Spring_Hibernate開發(fā)框架_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、基于注解驅(qū)動的Struts_Spring_Hibernate開發(fā)框架摘要:隨著Java開源框架不斷引進對注解(Annotation)的支持,使得開發(fā)人員可以用單方面去管理類及其之間關系,而不用像以往以XML配置文件的方式那樣,一旦遇到問題,就要不斷在Java視圖和XML視圖中切換。基于注解驅(qū)動的方式,大大減少了Struts、Spring、Hibernate的XML配置,配置與代碼集中在同一個地方,可以很敏捷的進行即時反射,是架構(gòu)輕量級Java Web應用的很好選擇。關鍵詞:Struts;Spring;Hibernate;注解(Annotation)1. 引言Struts + Spring +

2、Hibernate是目前國內(nèi)外主流Java Web應用開發(fā)框架之一。Struts作為前臺控制框架簡化了程序的開發(fā),使頁面設計人員和Java程序編寫人員達到有效的分離,降低系統(tǒng)架構(gòu)的耦合性。Hibernate是一個O/R Mapping持久層框架的輕量級組件,對持久層進行了輕量級封裝,降低了程序的復雜度。Spring作為一個應用于所有層面綜合框架,具有強大的應用功能及靈活性,非常適合作為一些大規(guī)模軟件項目的底層平臺。隨著Java開源框架不斷引進對Annotation的支持,其傳統(tǒng)的XML配置方式與Annotation配置方式相對比,傳統(tǒng)的XML的配置方式的缺點是:代碼與配置的分開,必須維護兩份相

3、對應的代碼(配置也可以認為是一種代碼),相對比較煩瑣,而Annotation方式代碼與配置集中在同一個地方,修改比較方便,以很敏捷的進行即時反射,是架構(gòu)輕量級Java Web應用的很好選擇。育兒圈平臺就是基于Annotation的方式架構(gòu)的。2. Struts + Spring + Hibernate的體系架構(gòu)大部分Web應用都可以按照職責分為表現(xiàn)層、業(yè)務邏輯層、數(shù)據(jù)持久層和領域模型層,每一層負責整個應用不同方面的職責,并且不應該和其他層有功能上的混合,應當每一層都應該和其他層隔離,只允許通過明確的接口在層與層之間進行通訊。下圖是基于Struts + Spring + Hibernate框架的

4、基本體系架構(gòu)圖:圖1 Struts + Spring + Hibernate框架的基本體系架構(gòu)圖表現(xiàn)層采用Struts框架,它執(zhí)行如下的功能:1 管理客戶端的請求并做出相應的應答。2 提供一個控制器,管理分派調(diào)用業(yè)務邏輯和其他上層處理。3 驗證用戶輸入,確保用戶輸入的信息合法有效。4 處理異常,將所有異常拋給Struts Action統(tǒng)一處理。業(yè)務邏輯層采用Spring框架,它負責如下的功能:1 處理應用程序的業(yè)務邏輯和業(yè)務校驗。2 統(tǒng)一管理事物。3 提供與其他相互作用的接口。4 管理業(yè)務級別的對象的依賴。5 在表現(xiàn)層和數(shù)據(jù)持久層之間增加了一個靈活的機制,避免兩者的直接聯(lián)系,實現(xiàn)松耦合編程。6

5、 在數(shù)據(jù)持久層上,構(gòu)造出業(yè)務邏輯的上下文,提供業(yè)務邏輯服務。7 管理基于數(shù)據(jù)持久層的業(yè)務邏輯的實現(xiàn)。數(shù)據(jù)持久層的作用是讓數(shù)據(jù)持久保留下來以及把持久保存的數(shù)據(jù)讀取出來。數(shù)據(jù)持久層采用目前比較成熟的Hibernate框架,它為Java提供對象模型到關系模型的持久化和查詢服務。Hibernate執(zhí)行如下功能:查詢關系數(shù)據(jù)以得到對象。執(zhí)行數(shù)據(jù)的保存、修改和刪除操作。領域模型層由實際需求中的業(yè)務對象組成。域模型層使得程序員能以自然的面向?qū)ο蟮姆绞焦ぷ鳎恍枰~外的編碼。域模型層主要的作用是提供一個在不同層之間轉(zhuǎn)移的對象集合。3. 在Struts_Spring_Hibernate架構(gòu)中使用Annotat

6、ion3.1實體類的Annotation配置例如平臺中的空間留言表實體類,其基于Annotation配置方式的代碼如下圖所示:其中:Entity定義Spacemessage類為實體類,Table定義該實體類在數(shù)據(jù)庫中對應的表名。Id定義該屬性對應的列為主鍵,SequenceGenerator和GeneratedValue指定主鍵的生成方式為序列生成方式(Oracle)。Column定義該屬性對應表中的列名,以及其他如:unique(是否唯一)、nullable(可否為空)等屬性。基于Annotation的配置方式省略了每個實體類一個hbm.xml配置文件的煩瑣操作,看起來更加簡潔、明了。3.2

7、 Dao和Manager組件的Annotation配置在育兒圈平臺中,所有的DAO類都是繼承自一個通用的泛型DAO類:SimpleHibernateTemplate<T, PK extends Serializable>。DAO和Manager組件基于Annotation方式配置的代碼如下圖所示:其中:Service表示SpacemessageManager類是一個service組件。Transactional表示使用Spring定義的事務管理器。Autowired表示Spring自動注冊Bean,并檢查Autowired的屬性已被注入。如上所示,基于Annotation的配置,省

8、略了如下在Spring配置文件中的配置:3.3 Action組件的Annotation配置在育兒圈平臺中,Action類的配置方式如下(以PostcommentAction為例):其中,ParentPackage("default")表示PostcommentAction在Struts中所屬的包繼承自名為“default”的包(default包在struts.xml文件中配置)。當然,除了ParentPackage注解外,還有Results(注解響應結(jié)果)、RequiredStringValidator(必填字符串驗證)等注解,大大方便了我們處理表單信息的校驗。Struts

9、.xml配置文件的配置如下:這里,struts.codebehind.pathPrefix屬性的value值為頁面文件的根路徑。當然這里有一個約定,返回頁面的路徑為struts.codebehind.pathPrefix的value + PackageNamespace + ActionName + ActionReturntype + .ftl(因為育兒圈平臺使用Freemarker模板文件作為視圖表現(xiàn)方式,所以后綴名為ftl)。當Action的執(zhí)行結(jié)果為SUCCESS時,ActionReturntype的值為空。所以,當blog.PostcommentAction執(zhí)行結(jié)果為SUCCESS時

10、,其對應的模板文件為:/WEB-INF/template/blog/postcomment.ftl。3.4 使用Annotation方式的配置文件當然,使用Annotation方式并不是說不要任何的XML配置文件,只是大大地簡化了而已,一些全局的、基本的配置還是需要的。例如:數(shù)據(jù)源,Hibernate的SessionFactory等,常用的配置如下:1) 讓Spring通過自動掃描來查詢和管理Bean其中,base-package屬性定義了要掃描的包。2) Spring中的數(shù)據(jù)源配置3) Spring中的Hibernate的SessionFactory配置其中,packagesToScan屬性

11、定義了要掃描的包。4) Spring中的事務配置5) web.xml文件配置當然,還不要忘了在web.xml中配置Spring和Struts。主要的配置如下圖所示:其中,actionPackages屬性定義了要以Annotion方式掃描的Action類的基本包目錄。4. 結(jié)束語本文描述了基于注解(Annotation)驅(qū)動的SSH(Struts + Spring +Hibernate)開發(fā)框架。并結(jié)合育兒圈平臺介紹了基本的基于Annotation的配置方式,如:實體類配置、DAO和Manager組件配置、Action組件配置等。隨著Annotation的流行,Annotation漸有取代XML的配置作用之勢,反對者有之,贊成者有之。雖然與傳統(tǒng)的XML的配置方式相對比,Annotation方式有其自身的一些優(yōu)點,如配置簡單,配置與代碼本身集中在同一個地方,修改比較方便等等。但是,Annotation不是萬能的,它也有令人詬病的地方是,如:對Annotation的修改必須重新編譯代碼。因此,需要根據(jù)項目的需求,結(jié)合使用Annotation與XML。配置的使用原則:大部分情況下,配置是很少會變更的,特別是像服務類之間的相互依賴,因此對這部分可以使用Annotation的配置方式以簡化開發(fā),同時提供一些擴展以方便當需要特殊配置時,也能夠方便處理;對一些變更機率比較大的部分,如全局系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論