<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

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

     

    首先看看兩種配置的優(yōu)缺點比較

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

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

     

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

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

     

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

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

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



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


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

    評論:
    # re: 談?wù)剛€人關(guān)于程序開發(fā)中,&ldquo;零配置&rdquo;和&ldquo;有配置&rdquo;的看法[未登錄] 2012-10-31 15:53 | sam
    耦合的AOP 開發(fā),Annotation式開發(fā),更加適合閱讀代碼和開發(fā)思路。。
    更加語義化。。

    XML配置可以關(guān)注一些重要的,外部引用的部分。。

    即使是經(jīng)常修改,項目也是編譯后再打包發(fā)布嘛。。。無所謂啦。。  回復(fù)  更多評論
      
    # re: 談?wù)剛€人關(guān)于程序開發(fā)中,&ldquo;零配置&rdquo;和&ldquo;有配置&rdquo;的看法 2012-10-31 16:10 | hoojo
    @sam
    一個大的項目重新打包發(fā)布很麻煩的,你敢保證每次打包其他的功能都不受影響,而且別人也會提交代碼。  回復(fù)  更多評論
      
    主站蜘蛛池模板: 久久精品国产亚洲av品善| 亚洲精品免费在线视频| 亚洲精品第一国产综合亚AV| 精品国产_亚洲人成在线高清| 国产在线观看免费完整版中文版 | 国产一卡2卡3卡4卡2021免费观看| 久久久精品视频免费观看| 亚洲gay片在线gv网站| 亚洲国产成人va在线观看网址| 亚洲乱码国产乱码精品精| 无码国产亚洲日韩国精品视频一区二区三区 | 100000免费啪啪18免进| 在线观看免费无码专区 | 国产亚洲AV手机在线观看| 日美韩电影免费看| 特级做A爰片毛片免费69| 最近中文字幕2019高清免费| a级毛片高清免费视频| 和老外3p爽粗大免费视频| 黄色a三级免费看| 欧洲亚洲国产精华液| 亚洲色少妇熟女11p| 亚洲一日韩欧美中文字幕在线| 亚洲激情视频网站| 亚洲精品在线电影| 亚洲色偷偷av男人的天堂| 久久精品国产精品亚洲毛片| 亚洲欧洲日产国产综合网| 亚洲A∨无码一区二区三区| 亚洲VA成无码人在线观看天堂| 久久九九亚洲精品| 久久99国产亚洲精品观看| 亚洲AV永久无码区成人网站| 亚洲国产a∨无码中文777| 亚洲AV无码久久精品蜜桃| 久久精品亚洲综合| 亚洲精品国产情侣av在线| 亚洲欧洲精品久久| 亚洲一区二区三区免费在线观看| 亚洲沟沟美女亚洲沟沟| 中文字幕精品三区无码亚洲|