亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Spring XML配置十二個最佳實踐

2019-11-18 12:58:37
字體:
來源:轉載
供稿:網友

  在這篇文章里,對于SPRing xml的配置,我將向你展示12種比較好的實踐。其中的一些實踐不僅是好的實踐,更是必要的實踐。除此以外,還有其他因素,例如領域模型的設計,都能影響XML的配置,但是這篇文章重點研究XML配置的易讀性和易治理性。

  1。不要使用autowiring

  Spring可以通過類的自省來自動綁定其依靠部分,使得你不必明確指明bean的屬性和構造器。Bean的屬性可以通過屬性名稱或類型匹配來實現自動綁定。構造器通過類型匹配來實現自動綁定。你甚至可以指定自動檢測自動綁定模式,它可以引導Spring選擇一種適當的運行機制。先來看看下面的一個例子:
            class="com.lizjason.spring.OrderService"
        autowire="byName"/>
  OrderService類的屬性名在容器中用于匹配bean實例。自動綁定可以潛在地節省一些打字和減少一些混亂。但是在現實世界的工程里你不應該使用這種方式,這是因為它犧牲了配置的清楚性和可維護性。許多指南和介紹中大量吹捧自動綁定是Spring的一種極好的特征而沒有提到這一特性所帶來的犧牲。依我的觀點,這就像Spring中的object-pooling,它更像是一種為了占據更多市場的商業特征。它對于XML配置文件的小巧化是一個好辦法,但實際上也增加了復雜程度,尤其當你運行有大量類聲明的工程時。雖然Spring答應你混合自動綁定和手動綁定,但是這個矛盾會使XML配置更加晦澀難懂。

  2.使用通俗的命名

  這個方式對于java編碼也一樣適用。在工程中使用清楚的、描述性的、協調的通俗名稱對于開發者理解XML配置是十分有益的。例如對于bean ID,你可以根據通俗的Java類名來命名它。對于例子中OrderServiceDAO的bean ID命名為orderServiceDAO。對于大的工程,你可以在bean ID前面加上包名作為前綴。

  3. 使用簡潔的形式

  簡潔形式避免了冗長,是因為它從子元素中將屬性值和參考寫到屬性中。例如下面的例子:
            class="com.lizjason.spring.OrderService">
        
            lizjason
        

        
            
        

    


  可以使用簡潔形式將上述代碼重寫為:
            class="com.lizjason.spring.OrderService">
                    value="lizjason"/>
        
    

  簡潔形式功能在1.2版本中可以使用。對于沒有簡潔形式。
簡潔形式不但可以節約你的打字,而且可以使XML配置文件清楚。它最引人注目的是當在一個配置文件中有大量定義的類時可以提高易讀性。

  4. 對于構造器參數匹配,類型名比序號好。

  當一個構造器含有一個以上的同種類型的參數,或者屬性值的標簽已經被占用時,Spring答應你使用從0計數的序號來解決這些會帶來混淆的問題。例如:
            class="com.lizjason.spring.BillingService">
        
        
    


  像下面這樣,利用類型屬性來編寫會更好一些:
            class="com.lizjason.spring.BillingService">
                    value="lizjason"/>
        
    

  使用索引可以稍稍減少一些冗長,但是和使用類型屬性相比,它還是有輕易發生錯誤的傾向和難于閱讀的缺點。你應該只在構造器參數不明確的時候,才使用索引這一方法。

  5. 盡可能重用已定義過的bean

  Spring提供一種類似繼續一樣的機制來減少配置信息的復制并簡化XML配置。定義一個子類可以從它父類那里繼續配置信息,而父類實質上作為子類的一個模板。這就是大工程中所謂的重用。你所需要做的就是在父類bean中設置abstract=true,然后在子bean注明它自己的父類bean。例如:
            class="com.lizjason.spring.AbstractService">
                    value="lizjason"/>
    


    ippingService
        parent="abstractService"
        class="com.lizjason.spring.ShippingService">
        
    

  ShippingService類從abstractService類那里繼續companyName屬性的值——lizjason。假如你沒有為一個bean指明類或factory方法,那么這個bean便是抽象的。

  6. 盡量使用applicationContext來裝配定義的bean

  像在Ant腳本中的引用一樣,Spring的引用對于裝配模塊化的bean來說是很有用的。例如:
    
        
        
                    class="com.lizjason.spring.OrderService"/>
    
  相對于使用import在XML配置中來預裝配,通過ApplicationContext來配置這些beans,顯得更加靈活。利用ApplicationContext也使得XML配置易于治理。你可以像下面的例子那樣在ApplictionContext構造器里布置bean:
    String[] serviceResources =
        {"orderServices.xml",
        "billingServices.xml",
        "shippingServices.xml"};
    ApplicationContext orderServiceContext = new
        ClassPathXmlApplicationContext(serviceResources);
  7. 利用id作為bean的標識符

  你可以指定一個id或名稱來作為bean的標識符。雖然使用id不會提高易讀性,但是它可以讓XML parser對bean的引用有效方面進行更好的驗證。假如由于XML IDREF的限制而不能使用某個id,你可以利用names來作為bean的標識符。XML IDREF的限制是id必須以字母開頭(或者在XML規范中定義的標點符號),后面接著字母,數字,連字號,下劃線,冒號等。實際上,碰到XML IDREF限制的問題是很少見的。

  8. 在開發階段使用依靠檢驗

  你可以在bean中給依靠檢驗的屬性設置值,而不采用原先默認的空值,屬性設置例如simple,object或all,以便容器進行依靠檢驗。當bean的全部的屬性(或某類屬性)需要被明確設置或自動綁定時,依靠檢驗便顯得很有用。
            class="com.lizjason.spring.OrderService"
        dependency-check="objects">
                    value="lizjason"/>
        
    
  在這個例子里,容器確保為orderService bean設置的屬性不是primitives 或者 collections。為所有的bean設置默認依靠檢測也是可以的,但是我們很少這樣做,是因為有些bean的屬性根本就不必設置。

  9. 為每個配置文件加上一個header comment

  最好使用descriptive id和名稱來代替在XML配置文件中的注釋。此外,加上一個配置文件header也很有用處,它可以概述文件中所定義的bean。你可以選擇將描述內容加入description標簽中。例如:
    
        
            This file defines billing service
            related beans and it depends on
            baseServices.xml,which provides
            service bean templates...
        

        ...
    

  使用description標簽的一個好處是可以輕易地利用工具從標簽中選取出description(的內容)。

  10. 對于任何變化,要與隊友積極交流

  當你重構Java代碼時,你需要隨時更新配置文件并且通知隊友。XML配置文件也是代碼,它們是應用程序的至關重要的部分,但是它們難于閱讀和維護。大部分時間你既要閱讀XML配置文件又要閱讀運行中的Java代碼。

  11. Setter injection優于constructor injection

  Spring提供3種類型的依靠注入: constructor injection,setter injection, 和method injection。我們一般只用前兩種類型。
            class="com.lizjason.spring.OrderService">
        
    


            class="com.lizjason.spring.BillingService">
                    ref="billingDAO">
    



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美另类在线观看| 色偷偷噜噜噜亚洲男人的天堂| 96sao精品视频在线观看| 国产精品美乳在线观看| 日本老师69xxx| 久久久久北条麻妃免费看| 亚洲国产小视频| 日本国产精品视频| 在线中文字幕日韩| 日韩中文有码在线视频| 欧美成人精品在线观看| 欧美日韩国产中文精品字幕自在自线| 国产亚洲精品成人av久久ww| 国产精品成人一区| 午夜精品福利电影| 伊人久久五月天| 亚洲欧美日韩区| 日韩美女av在线| 尤物九九久久国产精品的分类| 亚洲已满18点击进入在线看片| 亚洲国产精品大全| 欧美专区在线播放| 中文字幕精品网| 久久香蕉国产线看观看网| 91精品国产亚洲| 一级做a爰片久久毛片美女图片| 亚洲国内高清视频| 日韩免费观看av| 精品国产91久久久久久| 国模吧一区二区| 亚洲新声在线观看| 欧美高清视频在线播放| 亚洲精品suv精品一区二区| 精品美女永久免费视频| 欧美激情性做爰免费视频| 欧美特黄级在线| 欧洲精品久久久| 亚洲激情国产精品| 另类少妇人与禽zozz0性伦| 欧美性做爰毛片| 九九九久久国产免费| www.亚洲成人| 78m国产成人精品视频| 亚洲国产精品久久91精品| 欧美在线观看www| 中文字幕av一区中文字幕天堂| 欧美电影在线播放| 2019中文字幕免费视频| 亚洲第一页在线| 国产精品999999| 91国产美女在线观看| 日韩视频中文字幕| 性金发美女69hd大尺寸| 久久免费观看视频| 成人午夜一级二级三级| 91亚洲永久免费精品| 国产精品91久久| 欧美日韩加勒比精品一区| 精品人伦一区二区三区蜜桃免费| 97**国产露脸精品国产| 欧美刺激性大交免费视频| 色樱桃影院亚洲精品影院| 日韩在线观看精品| 国产精品福利在线| 久久av在线播放| 日韩美女在线看| 91精品久久久久久久久久久久久| 欧美中文在线观看| 欧美巨乳美女视频| 久久不射热爱视频精品| 欧美视频国产精品| 国产69精品久久久久99| 国产精品午夜视频| 久久男人资源视频| 久久久97精品| 国产日韩欧美视频| 国产精品999999| 国产一区二区三区在线观看网站| 欧美国产日本高清在线| 久久99亚洲精品| 欧美另类老女人| 91av视频在线观看| 96国产粉嫩美女| 欧美日韩国产成人在线观看| 91成人在线观看国产| 8090理伦午夜在线电影| 欧美国产日韩二区| 亚洲天堂网在线观看| 日韩高清有码在线| 日韩在线观看免费全集电视剧网站| 一区二区三区视频免费| 亚洲男人天天操| 日韩欧美第一页| 国产精品99久久久久久人| 国产亚洲欧洲高清| 亚洲三级av在线| 亚洲成人av片| 日韩成人在线网站| 亚洲一区二区三区香蕉| 久久综合免费视频| 久久综合网hezyo| 国产成人拍精品视频午夜网站| 亚洲a级在线播放观看| 欧美专区在线播放| 亚洲色图欧美制服丝袜另类第一页| 91av在线国产| 亚洲激情在线观看视频免费| 久久av红桃一区二区小说| 国产一区二区三区在线免费观看| 久久免费视频在线观看| 亚洲一级片在线看| 国产一区二区三区丝袜| 亚洲电影中文字幕| 91中文在线观看| 欧美精品国产精品日韩精品| 97在线视频免费观看| 国产精品亚洲第一区| 日韩中文字幕在线观看| 成人在线视频网| 亚洲国内精品视频| 国产97人人超碰caoprom| 全亚洲最色的网站在线观看| 91在线观看免费高清完整版在线观看| 色综合色综合网色综合| 国产成人精品国内自产拍免费看| 5278欧美一区二区三区| 亚洲第一福利视频| 91精品啪在线观看麻豆免费| 亚洲精品网址在线观看| 黄色成人av网| 精品国偷自产在线| 日本久久精品视频| 久久久久久久久网站| 国产精品1234| 亚洲成人动漫在线播放| 成人两性免费视频| 国产精品久久久久久久app| 国产在线视频不卡| 久久久999精品免费| 欧美日韩人人澡狠狠躁视频| 国产一区二区三区直播精品电影| 欧美午夜视频在线观看| 国产精品黄色影片导航在线观看| 亚洲视频在线观看免费| 日本国产欧美一区二区三区| 最新亚洲国产精品| 国产精品成人观看视频国产奇米| 麻豆一区二区在线观看| 国产精品日韩欧美大师| 欧美日韩成人精品| 亚洲r级在线观看| 97视频在线播放| 国产精品直播网红| 欧美午夜宅男影院在线观看| www.日韩免费| 国外成人在线播放| 中文字幕在线成人| 久久久999精品| 久久99国产综合精品女同| 欧美亚洲国产日本| 亚洲国产日韩欧美在线动漫| 欧美国产亚洲精品久久久8v| 日韩有码片在线观看| 国产成人啪精品视频免费网|