Spring中 idref元素的使用
2007-11-29 15:53
204 查看
[align=center]dref元素的使用[/align]
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.
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.
相关文章推荐
- spring中idref元素元素使用
- SPRING.NET 1.3.2 学习6--idref元素
- 【Spring学习06】依赖配置:元素idref
- spring idref和ref的区别
- Spring bean中的properties元素内的name 和 ref都代表什么意思啊?
- 2_5 IDREF和IDREFS类型的属性的使用及作用
- Spring Bean中idref和ref区别
- Spring中的ref标签的使用
- js方法的命名不能使用表单元素的名称或ID
- spring中的idref和ref的区别
- Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
- spring bean属性property、ref使用方式(转载)
- 在脚本中可以直接使用id名称调用元素
- 使用jQuery时Form表单元素ID和name命名大忌
- springboot 使用thymeleaf 模板引擎时报错org.xml.sax.SAXParseException: 元素类型 "link" 必须由匹配的结束标记 "</link>" 终止
- 在jQuery中动态创建id,如何使用该Id来访问这个元素
- 在spring的beans.xml文件中使用id和name的区别
- Spring的ID增长器使用示例(MySql数据库)
- Spring的ID增长器使用示例(MySql数据库)
- Spring中提示元素 'ref' 中不允许出现属性 'local'