這個問題是沒有絕對的優勢和缺點的。 程序員
有人喜歡說:我就愛用SSH2,由於都是最新的,我也喜歡用全annotation的方式來編程,由於這樣作比較潮流,比較優雅。可是。。。。。。這些都不是真正的justification。 web
對於在框架選型時,不只僅是開發者本身喜歡不喜歡的問題,就和有人說:開發者們永遠喜歡推倒重作,永遠喜歡開發新項目而對於修修改改維護類項目感冒是一個道理。 spring
試想,大部分的金融保險客戶,他們的系統都是有必定的年頭了,並且像這樣的企業中的一個IT項目是不可能跟着潮流常常去變化的,由於這些企業中的IT項目或者咱們稱做IT資產涉及到數據、機密性、穩定性,一旦這個項目自上線之日起它就一直在穩定的運行了,除非是重大變故通常是不會輕易去改它的架構或者是核心的,通常都是圍繞着己有項目來進行擴展和維護,所以這些企業中的J2EEAPP Server或者是JDK版本都不必定是最新的。 sql
好比說有些銀行到如今還一直在用was6.1,或者是weblogic9.x,更有甚者還在用jdk1.4,若是這時你在接手項目時不去了解企業的現情況,一拍腦殼說:咱們用SSH2吧!結果你的項目作完後連上線都沒法上線,到那時就不只僅是再讓你重構的問題了,呵呵,對吧. 數據庫
你不要試圖去和客戶解釋說:唉呀你怎麼還在用WAS5.1,你怎麼還在用Tomcat5.5啊,我給你搞個tomcat6.x也行,把你的JDK裝成1.6吧,呵呵,千萬不要這麼作。 編程
客戶能夠告訴你,它的服務器是小型機,上百萬元購買來的,購買小型機時贈送了WAS5.1所以在上面有許多的應用且已經使用了5年之久了,如今你爲了說你的框架是STRUTS2而逼着客戶升級JDK和WAS版本,若是萬一有問題了,出錯了,致使了客戶的實時交易延誤而引發的經濟損失,你能支付得起嗎?若是你說由於咱們的環境而不能使用大家的框架,那麼對不起,咱們公司不會採用你方的架構。呵呵!! 設計模式
框架的目的在於最大程度上減化一些底層的,重複性的勞動,把對數據庫的訪問,對resource等的訪問從程序員的實際工做中分離出來,使程序員有更多的時間去關注「業務邏輯」——摘自2001版的《EJB2從入門到精通》。因此在實際工做中不可以爲了用框架而用框架。 tomcat
比如,我用Annotation寫DAO是很方便,很優雅,可是你有沒有想過,當你的SQL若是是常常須要變,或者是須要經過外部動態傳入的時候甚至容許客戶本身構建SQL再傳給咱們的DAO的場景下,那麼對於咱們來講只須要改改SQL邏輯從新啓動一下服務器就能夠實現的而由於你用了所有基於Annotation的框架,我甚至須要去動咱們的代碼,要知道代碼無論你動了多少哪怕你只是加了一個註釋也是須要按照流程來從新測試、從新打包的。由於沒有人敢保證你的改動不引發regressionbug。因此這時把sql或者一些配置寫成xml或者是properties的外部配置形式要比你用annotation來得更靈活,這就是我在第十八天的spring+jdbcTemplate時爲何喜歡把SQL寫在XML裏再經過spring注入到DAO層的緣由。由於你的SQL不是一次寫成的,就算是一次寫成,你的工程在未來也會面臨SQL調優這麼一個過程,到時你每改動一次SQL,就要動一次代碼層,而你的改動可能只是把in變成了=或者是把innerjoin改爲hashjoin,那麼此時個人SQL若是是配置在外部配置文件中的話我改起來是否是更方便?尤爲是一些涉及到大數據量出報表的SQL是常常面臨調優的。 服務器
Struts2是基於filter框架的,你可使用它的filter,你甚至能夠不用去使用spring而直接使用struts2或者使用spring的MVC而拋棄struts2,都是沒問題的,沒有什麼所謂「不正統/正統」框架之說。比如我有一個servlet叫LoginFilter,這個filter誕生在8年前,經歷了好幾個項目了已是很是穩定了,所以當我碰到了struts2的框架時我不是說由於struts2的技術新我就必須所有用struts2來重作個人feature,穩定性重用性在哪裏?我既然手上有一個這麼穩定的歷經了好幾年的一些個組件,雖然它們歷史久遠了些但是我也是照用不誤,緣由就在於它穩定實用。 架構
說了這些,主要的目的仍是要告訴你們,框架和設計模式是同樣的,它只是在最大程度上解放你的生產力,減小你的重複勞動,避免了不要去重複造輪子。不要爲了框架而框架,不要被框架套死。比如剛練武時,一招一式都要照着書本和師傅的樣子去學,可是真正的武功高手是什麼樣的呢?「無招勝有招」,對不對?活用活用,要把框架和模式爲你所用而不是作框架的奴隸。
這也是我爲何強調框架而不只僅是強調SSX體系的緣由,其實在個人SSX框架中還常常能夠看到一些古老的jstl,servlet的存在,個人目的就在於充分利用各個技術的優勢,把各個技術各個框架的優勢集中起來使用這樣才能搭出一本葵花寶典來。