Spring中 idref元素的使用

 
dref元素的使用
idref元素用来将容器内其它bean的id传给<constructor-arg/>或<property/>元素,同时提供错误验证功能.
   <bean id ="theTargetBean" class="…"/>
     <bean id="theClientBean" class="…">
        <property name="targetName">
           <idref bean="theTargetBean"/>
        </property>
   </bean>
 使用idref标记允许容器在部署时 验证所被引用的bean的是否存在.
 
应用其他bean(协作者)
在<constructor-arg/>或<property/>元素内部还可以使用ref元素.用来将bean中指定属性的值设置为对容器中的另外一个bean的引用.
使用<ref/>标记:    <ref bean="someBean"/>
 这里'bean'元素的值即可是指定bean的id值也可以是name值.
                  <ref local="someBean"/>
 这里所引用的bean必须在同一个XML文件中,而且必须是目标bean的id属性值.
1).使用depends-on
 这个属性可以用于当前bean初始化之前显示地强制一个或多个bean被初始化.
   <bean id = "beanOne" class = "ExampleBean" depends-on="manager"/>
   <bean id = "manager" class = "ManagerBean"/>
 若依赖多个bean可以在depends-on中将指定的多个bean名字用分隔符进行分隔.
   就是当程序运行是首先初始化manager--bean,然后在初始化 beanOne--bean.
2).延迟初始化bean
 ApplicationContext默认行为就是在启动时将所有singleton bean提前进行实例化.
 <bean id="lazy" class="com.foo.ExpensiveBean" lazy-init="true"></bean>
 <bean name="not.lazy" class="com.foo.AnotherBean"></bean>
 当启动时,设置为lazy的bean将不会提前被实例化, 而not.lazy却会被提前实例化.
 如果一个singleton bean依赖于某个被设置为 lazy的bean,这时启动时可能会同时加载初始化.
3).自动装配(autowire)协作者
autowire的方便之处在减少或者消除属性或构造器参数的设置.
autowire共有五种类型:
 
 1).no ---不是用自动装配.必须通过ref元素指定依赖,这是默认设置.
 
 2).byName--根据属性名自动装配.此项将检查容器并根据名字查找与属性完全一致的bean.
 
 3).tyType--查找一个与指定属性类型相同的bean.
 
 4).constructor--根据构造函数名来查找相匹配的bean.
 
 5).autodetect--它根据bean的自身机制来决定是使用constructor还是byType方式进行自动装配.
 
4).设置Bean自动装配失效
 把<bean/>元素的autowire-candidate属性设为false,这样容器在查找自动装配对象时将不会考虑该bean.
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值