隨筆-57  評論-117  文章-1  trackbacks-0

          本人是做Java開發的,在程序開發中會經常使用到OpenSource開源框架,這些框架大多都靈活、簡單、易用、方便。而且開源框架一般會提供一些基本的配置,如我們常用的框架就有Hibernate要配置對象實體到數據庫的映射;Spring要配置bean的管理及其對象、屬性的注入;Struts要配置Action對象和返回的資源路徑;MyBatis要配置CRUD(增刪改查)的相關SQL語句。這些配置你不能省略,必須得有,沒有程序也不會自動添加。我們也是極可能的簡化這些配置,不管怎么樣簡化但這些配置是不能省略,雖然這些框架給我們開發程序都提供了很大方面上的便利。

          但有時候你是否有糾結這么樣的一個問題:到底是用XML配置?還是用Annotation注解配置?或是用XML和Annotation混合配置?

           

          首先看看兩種配置的優缺點比較

          XML它是無可代替的超文本標記語言,可讀性、傳輸性好,它還具有一下優點:
          1、可讀性、傳輸性好:XML可擴展標記語言,最大的優勢在于開發者能夠為軟件量身定制適用的標記,使代碼可讀性大大提升。
          2、靈活性、易用性、擴展性、移植性好:利用XML配置能使軟件更具擴展性。如Spring將class間的依賴配置在XML中,最大限度地提升應用的可擴展性。同樣,如果是基于接口注入方式,可以隨便切換接口實現類進行注入即可。
          3、驗證機制:具有成熟的驗證機制確保程序正確性。利用Schema或DTD可以對XML的正確性進行驗證,避免了非法的配置導致應用程序出錯。
          4、修改配置而無需變動現有程序、無需重新編譯。

          雖然XML有如此多的好處,但它也不是萬能的,XML也有自身的缺點:
          1、開發友好性支持:需要解析工具或類庫的支持。如果你的XML配置需要用到XML的提示或是解析編譯,需要用到Schema或DTD進行驗證。
          2、性能影響:解析XML勢必會影響應用程序性能,占用系統資源。至少你會用到一些解析XML的技術去解析節點元素內容。
          3、維護性高:配置文件過多導致管理變得困難。
          4、編譯期無法對其配置項的正確性進行驗證,或要查錯只能在運行期。如Spring Bean配置了一個錯誤的類路徑class。
          5、IDE 無法驗證配置項的正確性無能為力。如Spring注入一個錯誤的對象或屬性。
          6、查錯變得困難。往往配置的一個手誤導致莫名其妙的錯誤。
          7、開發人員不得不同時維護代碼和配置文件,開發效率變得低下。
          8、配置項與代碼間存在潛規則,改變了任何一方都有可能影響另外一方。

           

          讓我們來看看Annotation的優點
          1、保存在class文件中,降低維護成本。
          2、無需工具支持,無需解析。
          3、編譯期即可驗證正確性,查錯變得容易,雖然有部分錯誤需要在運行期間才能看到。
          4、配置簡單、簡約,提升開發效率。

          同樣Annotation也不是萬能的,它也有很多缺點
          1、若要對配置項進行修改,不得不修改Java文件,重新編譯打包應用。
          2、配置項編碼在Java文件中,可擴展性差、移植性性低。

           

          那到底用什么樣的配置呢,在這里我談談我個人的看法:
          1、在開發期間我們用Annotation注解,這樣在一定程度上不僅可以省去對XML配置文件的維護,而且大大的提高了開發效率,縮短了開發周期。
          2、開發后期,項目功能完成,我們可以將Annotation配置轉換為XML配置,禁用Annotation即可。這樣做的理由是如果項目上線,我們需要修改相關代碼的配置,直接改XML、properties配置文件即可。這樣就不需要開發人員找到相應的代碼修改源代碼、重新編譯打包發布。而xml的配置是可以直接修改的,不需要重新編譯,只需重啟下你的服務器即可。

          如果這樣是不是即利用到框架給我們提供的Annotation注解,也利用到了XML配置。充分的發揮了開源框架給我們提供的技術應用。

          3、混合模式,Annotation和XML相互運用。需要動態配置、后期經常性修改的就用XML配置,如果是不怎么修改的就用Annotation。或許這種混合模式更適合我們,你覺得呢?O(∩_∩)O~



          作者:hoojo
          出處:
          blog:http://blog.csdn.net/IBM_hoojo
                   http://hoojo.cnblogs.com
          本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


          版權所有,轉載請注明出處 本文出自:
          分享道版權所有,歡迎轉載,轉載請注明出處,謝謝
          posted on 2012-10-31 12:44 hoojo 閱讀(2511) 評論(2)  編輯  收藏 所屬分類: Design PatternHibernateJavaEEMyBatisOthersSpringStrutsStruts2.x

          評論:
          # re: 談談個人關于程序開發中,“零配置”和“有配置”的看法[未登錄] 2012-10-31 15:53 | sam
          耦合的AOP 開發,Annotation式開發,更加適合閱讀代碼和開發思路。。
          更加語義化。。

          XML配置可以關注一些重要的,外部引用的部分。。

          即使是經常修改,項目也是編譯后再打包發布嘛。。。無所謂啦。。  回復  更多評論
            
          # re: 談談個人關于程序開發中,“零配置”和“有配置”的看法 2012-10-31 16:10 | hoojo
          @sam
          一個大的項目重新打包發布很麻煩的,你敢保證每次打包其他的功能都不受影響,而且別人也會提交代碼。  回復  更多評論
            
          主站蜘蛛池模板: 赤峰市| 巴青县| 乳山市| 永年县| 平乡县| 富宁县| 洪洞县| 南漳县| 万源市| 城口县| 大城县| 寿宁县| 正阳县| 文山县| 河源市| 河南省| 崇义县| 武邑县| 门头沟区| 奈曼旗| 平遥县| 区。| 津南区| 平塘县| 广州市| 隆尧县| 德钦县| 舞钢市| 泽库县| 启东市| 建水县| 鸡西市| 鹤庆县| 牙克石市| 绥宁县| 平乡县| 克东县| 高唐县| 惠来县| 梓潼县| 清远市|