使用struts+spring+hibernate組裝web應(yīng)用

字號:

摘要:
    這篇文章將討論怎樣組合幾個的框架去做到松耦合的目的,怎樣建立你的構(gòu)架,怎樣讓你的各個應(yīng)用層保持一致。富于挑戰(zhàn)的是:組合這些框架使得每一層都以一種松耦合的方式彼此溝通,而與底層的技術(shù)無關(guān)。這篇文章將使用3種流行的開源框架來討論組合框架的策略
    其實,就算用Java建造一個不是很煩瑣的web應(yīng)用程序,也不是件輕松的事情。當(dāng)為一個應(yīng)用程序建造一個構(gòu)架時有許多事情需要考慮。從高層來說,開發(fā)者需要考慮:怎樣建立用戶接口?在哪里處理業(yè)務(wù)邏輯?和怎樣持久化應(yīng)用數(shù)據(jù)。這三層每一層都有它們各自的問題需要回答。 各個層次應(yīng)該使用什么技術(shù)?怎樣才能把應(yīng)用程序設(shè)計得松耦合和能靈活改變?構(gòu)架允許層的替換不會影響到其它層嗎?應(yīng)用程序怎樣處理容器級的服務(wù),比如事務(wù)處理?
    當(dāng)為你的web應(yīng)用程序創(chuàng)建一個構(gòu)架時,需要涉及到相當(dāng)多的問題。幸運的是,已經(jīng)有不少開發(fā)者已經(jīng)遇到過這類重復(fù)發(fā)生的問題,并且建立了處理這類問題的框架。一個好框架具備以下幾點: 減輕開發(fā)者處理復(fù)雜的問題的負擔(dān)(“不重復(fù)發(fā)明輪子”);內(nèi)部定義為可擴展的;有一個強大的用戶群支持??蚣芡ǔD軌蚝芎玫慕鉀Q一方面的問題。然而,你的應(yīng)用程序有幾個層可能都需要它們各自的框架。就如解決你的用戶接口(UI)問題時你就不應(yīng)該把事務(wù)邏輯和持久化邏輯摻雜進來。例如,你不應(yīng)該在控制器里面寫jdbc代碼,使它包含有業(yè)務(wù)邏輯,這不是控制器應(yīng)該提供的功能。它應(yīng)該是輕量級的,代理來自用戶接口(UI)外的調(diào)用請求給其它服務(wù)于這些請求的應(yīng)用層。好的框架自然的形成代碼如何分布的指導(dǎo)。更重要的是,框架減輕開發(fā)者從頭開始寫像持久層這樣的代碼的痛苦,使他們專注于對客戶來說很重要的應(yīng)用邏輯。
    這篇文章將討論怎樣組合幾個的框架去做到松耦合的目的,怎樣建立你的構(gòu)架,怎樣讓你的各個應(yīng)用層保持一致。富于挑戰(zhàn)的是:組合這些框架使得每一層都以一種松耦合的方式彼此溝通,而與底層的技術(shù)無關(guān)。這篇文章將使用3種流行的開源框架來討論組合框架的策略。表現(xiàn)層我們將使用Struts;業(yè)務(wù)層我們將使用Spring;持久層使用Hibrenate.你也可以在你的應(yīng)用程序中替換這些框架中的任何一種而得到同樣的效果。圖1展示了當(dāng)這些框架組合在一起時從高層看是什么樣子。