1. 程式人生 > >spring中的idref和ref的區別

spring中的idref和ref的區別

在spring中idref是用來將容器內其他bean的id傳給<constructor-arg/>和<property />,記住是bean的id名稱不是bean物件例項,同時使用idref容器在部署的時候還會驗證這個名稱的bean是否真實存在。idref元素的功能與<value>類似,就是idref多了驗證的功能,減少配置的書寫錯誤機率。除了<idref bean=""/>,如果被引用的bean在同一個xml檔案中,且bean的名字就是bean的id,除了可以使用<idfef local=""/>,此屬性允許xml解析器在解析XML的時候對引用的bean進行驗證。

<bean id="theBeanName"  class="...."/>

<bean id="bean">

   <property name="targetName">

     <idref bean="theBeanName"/>

 <!--value>theBeanName</value-->

   </property>

  </bean>

idref和ref的作用的完全不同的,ref是對bean的物件例項的引用,ref同樣有兩種方式<ref bean=""/>和<ref local=""/>,bean屬性的值可以同目標bean的id屬性相同,也可以同目標bean的name屬性中任何一個值相同。用local屬性指定目標bean可以利用XML解析器的能力在同一個檔案中驗證XML id引用。local屬性的值必須與目標bean的id屬性一致。如果在同一個檔案中沒有匹配的元素,XML解析器將會產生一個錯誤。因此,如果目標bean在同一個XML檔案中,那麼使用local形式將是最好的選擇