zoukankan      html  css  js  c++  java
  • spring自己主动装配Bean属性

    spring提供了3种类型的自己主动装配

    • byName:把与Bean的属性具有同样名字(或者ID)的其它Bean自己主动装配到Bean的相应属性中。
    • byType:把与Bean的属性具有同样类型的其它Bean自己主动装配到Bean的相应属性中。
    • constructor:把与Bean的构造器入參具有同样类型的其它Bean自己主动装配到Bean的相应属性中。

    byName自己主动装配


    	<bean id="roles" class="cn.com.ztz.spring.model.Roles" autowire="byName">
    		<property name="id" value="1"/>
    		<property name="roleName" value="管理员"/>
    		<!-- 能够不须要用ref去关联bean了 -->
    		<!-- <property name="users" ref="users"/> -->
    	</bean>
    	<bean id="users" class="cn.com.ztz.spring.model.Users">
    		<property name="id" value="2"/>
    		<property name="name" value="张三"/>
    	</bean>

    byName自己主动装配遵循一项约定:为属性自己主动装配ID与该属性名字同样的Bean。通过设置autowire="byName"来自己主动装配。

    byType自己主动装配


    	<bean id="roles" class="cn.com.ztz.spring.model.Roles" autowire="byType">
    		<property name="id" value="1"/>
    		<property name="roleName" value="管理员"/>
    		<!-- 能够不须要用ref去关联bean了 -->
    		<!-- <property name="users" ref="users"/> -->
    	</bean>
    	<!-- 删除掉Bean的id,也能够正确装配 -->
    	<bean class="cn.com.ztz.spring.model.Users">
    		<property name="id" value="2"/>
    		<property name="name" value="张三"/>
    	</bean>

    byType自己主动装配存在一个局限性:假设Spring寻找到多个Bean。他们的类型与须要自己主动装配的属性类型都相匹配,怎么办?Spring提供另外两种选择,能够为自己主动装配标识一个首选Bean。或者取消某个Bean自己主动装配的候选资格。
    为自己主动装配标识一个首选Bean,能够使用<bean>元素primary属性。primary属性默认值是true,这就意味着不存在首选Bean。

    我们能够把别的Bean的primary设置false来达到效果。

    为自己主动装配排除一个Bean,能够使用<bean>元素的autowire-candidate属性。设置值为false。



    constructor自己主动装配


    	<bean id="roles" class="cn.com.ztz.spring.model.Roles" autowire="constructor">
    		<constructor-arg name="id" value="1"/>
    		<constructor-arg name="roleName" value="管理员"/>
    		<!-- 能够不须要用ref去关联bean了 -->
    		<!-- <constructor-arg name="users" ref="users"/> -->
    	</bean>
    	<!-- 删除掉Bean的id,也能够正确装配 -->
    	<bean class="cn.com.ztz.spring.model.Users">
    		<constructor-arg name="id" value="2"/>
    		<constructor-arg name="name" value="张三"/>
    	</bean>

    constructor自己主动装配跟byType自己主动装配有同样的局限性。

    当发现多个Bean匹配某个构造器的入參,Spring也不会去尝试哪个构造器更适合使用。



    默认自己主动装配


    假设须要为Spring应用上下文的每个Bean配置同样的autowire属性,那么我们能够在<beans>元素添加一个default-autowire属性。



    警告:在实际开发中。尽管自己主动装配能使我们开发速度变快。可是在维护中须要花费非常多的时间。所以我建议还是显示的装配比較好。


  • 相关阅读:
    Cactus详细讲解
    jexus处理静态文件(处理后缀)
    简单的html兼容(参考js和css的常规写法)
    IOHelper(自制常用的输入输出的帮助类)
    @Html.AntiForgeryToken() 源码分析,表单防伪码的生成
    缓存处理类(MemoryCache结合文件缓存)
    MVC过滤大法(过滤静态文件)
    C#文件监控工具(对追加内容的监控并输出)
    C#在Linux上的开发指南
    对java面试文章的技术漫谈的C#技术理解
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6752230.html
Copyright © 2011-2022 走看看