何时使用<ref bean =“”>以及何时在Spring中使用<ref local =“”>?</ref> </ref>

时间:2012-01-05 09:41:48

标签: spring

何时使用<ref bean="service" />以及何时在Spring使用<ref local="service" />

5 个答案:

答案 0 :(得分:32)

  

使用ref标记的bean属性指定目标bean是最常用的形式,并允许创建对同一BeanFactory / ApplicationContext中的任何bean的引用(无论是否在同一XML文件中)或父类的BeanFactory / ApplicationContext中。 bean属性的值可以与目标bean的id属性相同,也可以与目标bean的name属性中的值之一相同。

<ref bean="someBean"/>
     

使用local属性指定目标bean利用XML解析器验证同一文件中的XML id引用的能力。 local属性的值必须与目标bean的id属性相同。如果在同一文件中找不到匹配元素,则XML解析器将发出错误。因此,如果目标bean位于同一XML文件中,则使用本地变体是最好的选择(以便尽早了解错误)。

<ref local="someBean"/>

这是来自Spring源参考here

答案 1 :(得分:12)

4.0 beans xsd不再支持ref元素的local属性,因为它不再提供常规bean引用的值。升级到4.0架构时,只需将现有的ref本地引用更改为ref bean。

答案 2 :(得分:7)

    如果您的父子配置文件中有重复的ID,并且您想在任一配置文件中区分这两者,则应使用
  • <ref local="someBeanId">

  • 应在子配置文件中使用
  • <ref parent="someBeanId">来引用父ID。

  • 如果您的父子配置文件中没有重复的ID,则应使用
  • <ref bean="someBeanId">

答案 3 :(得分:3)

<ref local="..">要求被引用的bean位于同一个配置文件中。

<ref bean="...">只需要它在同一个上下文中,或者在父上下文中。

差异主要是文档之一。如果您看到<ref local="...">,那么您知道只需查看同一文件即可找到它。除此之外,没有太大的区别。在大多数情况下,我通常会使用<ref bean="...">

答案 4 :(得分:2)

4.1春季 本地属性无效。

我在父xml中使用了

的name属性

并在子文件中通过我已经给出的别名引用了bean。