何时使用<ref bean="service" />
以及何时在Spring使用<ref local="service" />
?
答案 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)
<ref local="someBeanId">
。
<ref parent="someBeanId">
来引用父ID。
<ref bean="someBeanId">
。
答案 3 :(得分:3)
<ref local="..">
要求被引用的bean位于同一个配置文件中。
<ref bean="...">
只需要它在同一个上下文中,或者在父上下文中。
差异主要是文档之一。如果您看到<ref local="...">
,那么您知道只需查看同一文件即可找到它。除此之外,没有太大的区别。在大多数情况下,我通常会使用<ref bean="...">
。
答案 4 :(得分:2)
4.1春季 本地属性无效。
我在父xml中使用了
的name属性并在子文件中通过我已经给出的别名引用了bean。