spring ref标签和idref标签的区别

ref属性和idref属性都是可以用在constructor-arg元素和property元素中注入的。但是它们之间的注入还是有点区别的。

首先看一下spring官方给出的文档和说明:

ref:官方的说明:The above bean definition snippet is exactly equivalent (at runtime) to the following snippet(大概意思:这两个片段配置是等价的在运行的时候)

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

<bean id="client" class="...">
    <property name="targetName" value="theTargetBean" />
</bean>

idref:官方给出的说明:The idref element is simply an error-proof way to pass the id (string value - not a reference) of another bean in the container to a or element.(通过或者注入bean的时候通过idref来检查注入的bean是否在容器中的一种检查错误的方式)。

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

<bean id="theClientBean" class="...">
    <property name="targetName">
        <idref bean="theTargetBean" />
    </property>
</bean>

那么这两个标签的区别是什么呢?

实际上,idref注入的只是目标bean的id,而不是目标bean的实例,同时使用idref容器在部署的时候还会验证这个名称是否存在,就相当于是一个验证功能。

其实idref就跟value差不多,<value>用来给property或者constructor-arg一个String类型的值,而idref虽然也是给他们一个String类型的值,但这个值必须是容器中存在的bean的id.

 

而ref用来干什么的呢?
同样在<constructor-arg/>或者<property/>元素内部也可以使用ref元素。用来将bean中指定属性的值设置为对容器中的另外一个bean的引用。ref元素有三个属性,区别如下:

1、local 只能指定与当前配置的Bean在同一个配置文件中的Bean定义的名称;

2、parent 只能指定位于当前容器的父容器中定义的对象引用;

3、bean 基本上都行,即以上两种情况都可以,所以,在这个情况下,直接使用bean来指定对象引用就可以了。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值