<ref local="xx"/>
用"local"属性指定目标其实是指向同一文件内对应"id"属性值为此"local"值的索引,"local"属性的值必须和目标bean的id属性相同。如果同一文件内没有匹配的元素,xml解析器将提示错误。同样,如果目标在同一XML文件内,使用"local"变量是最好的选择(为了尽可能早地知道错误)。
注意:spring 4.0不再支持ref local,官方推荐使用 <ref bean="xxxxx">
The local attribute on the ref element is no longer supported in the 4.0 beans xsd since it does not provide value over a regular bean reference anymore. Simply change your existing ref local references to ref bean when upgrading to the 4.0 schema.
<ref bean="xx"/>
用"bean"属性指定目标bean是最常规的形式,这允许创建索引到任何同一个容器内的bean(无论是否在同一XML 文件中)或者父级的容器内的bean。"bean"属性的值可以和目标bean的"id"属性相同,也可以和目标bean的"name"属性内的一个值相同。
两者的区别:
<ref bean=""/> 是寻找全局中的 bean; <ref local=""/> 是寻找本 xml 文件中的 bean。
<ref>提供了如下几方面的属性:
1)bean:在当前Spring XML配置文件中,或者在同一BeanFactory(ApplicationContext)中的其他JavaBean中.
2)local:在当前Spring XML配置文件中.其依赖的JavaBean必须存在于当前Spring XML培植文件中.如果借助 于Spring IDE, 则在编译期可以对其依赖的 JavaBean 进行验证。基于 local 方式,开发者能够使用到 XML 本身提供 的优势,而进行验证。
3)parent: 用于指定其依赖的父 JavaBean 定义。