自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring中XML配置文件的十二個(gè)最佳方法(上)

開(kāi)發(fā) 后端
本文介紹Spring中XML配置文件的十二個(gè)最佳方法中的前六個(gè),包括使用簡(jiǎn)潔形式,使用命名約定等。

1。避免使用自動(dòng)綁定(autowiring)功能
Spring 可以通過(guò)bean類的自省自動(dòng)綁定依賴性,所以不必顯式指明bean的屬性和構(gòu)造函數(shù)。Bean屬性可以通過(guò)屬性名稱或類型匹配來(lái)實(shí)現(xiàn)自動(dòng)綁定。構(gòu)造函數(shù)通過(guò)類型匹配來(lái)實(shí)現(xiàn)自動(dòng)綁定。甚至可以指定自動(dòng)檢測(cè)autowiring模式,它可以引導(dǎo)Spring選擇一種適當(dāng)?shù)倪\(yùn)行機(jī)制。先來(lái)看看下面的一個(gè)例子:

  1. <bean id="orderService" 
  2.         class="com.lizjason.spring.OrderService" 
  3.         autowire="byName"/> 

OrderService 類的屬性名在容器中用于匹配bean實(shí)例。自動(dòng)綁定可能會(huì)節(jié)省一些鍵入工作量并減少混亂。但是在現(xiàn)實(shí)項(xiàng)目中不應(yīng)該使用這種方式,因?yàn)樗鼱奚伺渲玫目勺x性和可維護(hù)性。許多指南和介紹中大肆吹捧自動(dòng)綁定是Spring的一項(xiàng)極好的特性,而沒(méi)有提到這一特性所帶來(lái)的犧牲。依我來(lái)看,這就像Spring中的對(duì)象池(object-pooling),更大程度上只是宣傳的噱頭。對(duì)于精簡(jiǎn)XML配置文件來(lái)說(shuō),它是一個(gè)好辦法,但它實(shí)際上增加了復(fù)雜性,尤其是在運(yùn)行包含大量類聲明的項(xiàng)目時(shí)。雖然Spring允許混合使用自動(dòng)綁定和顯式綁定,但這會(huì)使XML配置更加晦澀難懂。

2.使用命名約定
該原則對(duì)于Java編碼也一樣適用。在項(xiàng)目中使用清晰的、描述性的、一致的命名約定將非常有利于開(kāi)發(fā)人員理解XML配置。例如,對(duì)于bean ID,可以按照J(rèn)ava類字段名約定來(lái)命名它。OrderServiceDAO實(shí)例的bean ID應(yīng)該命名為orderServiceDAO。對(duì)于大型項(xiàng)目,可以在bean ID前面加上包名作為前綴。

3. 使用簡(jiǎn)潔形式
簡(jiǎn)潔形式避免了冗長(zhǎng),因?yàn)樗鼘傩灾岛鸵脧淖釉刂幸迫雽傩灾小@缦旅娴睦樱?/P>

  1. <bean id="orderService" 
  2.         class="com.lizjason.spring.OrderService"> 
  3.         <property name="companyName"> 
  4.             <value>lizjasonvalue> 
  5.         property> 
  6.         <constructor-arg> 
  7.             <ref bean="orderDAO"> 
  8.         constructor-arg> 
  9.     bean> 

可以使用簡(jiǎn)潔形式將上述代碼重寫為:

  1. <bean id="orderService" 
  2.         class="com.lizjason.spring.OrderService"> 
  3.         <property name="companyName" 
  4.             value="lizjason"/> 
  5.         <constructor-arg ref="orderDAO"/> 
  6.     bean>  

簡(jiǎn)潔形式自1.2版本起就可以使用。注意,對(duì)于,沒(méi)有簡(jiǎn)潔形式。
簡(jiǎn)潔形式不但可以節(jié)約鍵入工作量,而且可以使XML配置文件更清晰。當(dāng)一個(gè)配置文件中定義了大量的類時(shí),它可以顯著提高可讀性。

4. 對(duì)于構(gòu)造函數(shù)參數(shù)匹配,類型比下標(biāo)好
當(dāng)構(gòu)造函數(shù)含有一個(gè)以上同種類型的參數(shù),或者屬性值的標(biāo)簽已經(jīng)被占用時(shí),Spring允許使用從0開(kāi)始的下標(biāo)來(lái)避免混淆。例如:

  1. <bean id="billingService" 
  2.         class="com.lizjason.spring.BillingService"> 
  3.         <constructor-arg index="0" value="lizjason"/> 
  4.         <constructor-arg index="1" value="100"/> 
  5.     bean> 

利用type屬性來(lái)編寫會(huì)更好一些,如下:

  1. <bean id="billingService" 
  2.         class="com.lizjason.spring.BillingService"> 
  3.         <constructor-arg type="java.lang.String" 
  4.             value="lizjason"/> 
  5.  
  6.         <constructor-arg type="int" value="100"/> 
  7.     bean>  

使用index可以減少一些代碼,但是與type屬性相比,它更易于出錯(cuò)且難于閱讀。只有在構(gòu)造函數(shù)參數(shù)不明確的時(shí)候,才應(yīng)該使用index。

5. 盡可能重用已定義的bean
Spring 提供了一種類似于繼承的機(jī)制來(lái)減少配置信息的復(fù)制并簡(jiǎn)化XML配置。定義一個(gè)子類,它就可以從父類那里繼承配置信息,而父類實(shí)際上成為子類的一個(gè)模板。這就是大型項(xiàng)目中所謂的重用。只需在父類bean中設(shè)置abstract=true,然后在子bean中指定parent引用。例如:

  1. <bean id="abstractService" abstract="true" 
  2.         class="com.lizjason.spring.AbstractService"> 
  3.         <property name="companyName" 
  4.             value="lizjason"/> 
  5.     bean> 
  6.     <bean id="shippingService" 
  7.         parent="abstractService" 
  8.         class="com.lizjason.spring.ShippingService"> 
  9.         <property name="shippedBy" value="lizjason"/> 
  10.     bean>  

ShippingService類從abstractService類繼承companyName屬性的值——lizjason。如果一個(gè)bean沒(méi)有指定類或工廠方法,那么這個(gè)bean便是抽象的。

6. 在導(dǎo)入時(shí),***通過(guò)ApplicationContext來(lái)匯編bean定義
像Ant腳本中的導(dǎo)入一樣,Spring的import元素對(duì)于匯編模塊化的bean定義來(lái)說(shuō)是很有用的。例如:

  1. <beans> 
  2.         <import resource="billingServices.xml"/> 
  3.         <import resource="shippingServices.xml"/> 
  4.         <bean id="orderService" 
  5.             class="com.lizjason.spring.OrderService"/> 
  6.     <beans>  

然而,相對(duì)于使用import在XML配置中進(jìn)行預(yù)匯編,通過(guò)ApplicationContext來(lái)配置這些bean則顯得更加靈活。使用 ApplicationContext的話,XML配置也更易于管理??梢韵駻pplictionContext構(gòu)造函數(shù)傳遞一組bean定義,如下:

  1. String[] serviceResources =  
  2.         {"orderServices.xml",  
  3.         "billingServices.xml",  
  4.         "shippingServices.xml"};  
  5.     ApplicationContext orderServiceContext = new 
  6.         ClassPathXmlApplicationContext(serviceResources);  

【編輯推薦】

  1. Spring2.0新特性點(diǎn)評(píng)
  2. Eclipse插件之Spring IDE
  3. Spring工作原理探秘
  4. 在Eclipse RCP中使用Spring框架
  5. Spring定時(shí)器的兩種實(shí)現(xiàn)方式
責(zé)任編輯:佚名 來(lái)源: Java天堂
相關(guān)推薦

2009-06-17 14:36:10

SpringXML配置文件

2009-11-02 10:15:53

ASP.NET MVC

2009-08-26 16:25:43

軟件測(cè)試

2022-04-12 13:44:19

數(shù)據(jù)分析算法人工智能

2009-11-09 14:44:52

開(kāi)源UML工具

2022-01-18 10:15:18

Vue性能優(yōu)化前端

2020-10-09 11:24:38

應(yīng)用安全安全開(kāi)發(fā)成熟度模型BSIMM

2009-11-02 13:50:53

WordPressCMS

2017-12-02 22:26:45

數(shù)據(jù)分析信息技術(shù)IT

2019-01-26 08:40:26

2013-12-17 09:39:55

安全事件2013年安全事件

2010-06-18 15:44:24

開(kāi)源UML工具

2021-08-18 10:58:56

云計(jì)算云計(jì)算環(huán)境云計(jì)算趨勢(shì)

2013-07-12 10:41:36

移動(dòng)應(yīng)用云測(cè)試

2021-11-04 09:15:58

終端Linux命令

2011-03-21 17:09:38

數(shù)據(jù)表設(shè)計(jì)原則

2011-08-02 11:04:40

2011-10-17 13:36:54

Chrome命令

2011-06-12 08:56:01

友情鏈接

2009-08-08 08:49:57

Windows 7新特性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)