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属性。



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




spring自己主动装配Bean属性的更多相关文章

  1. spring实战一:装配bean之注入Bean属性

    内容参考自spring in action一书. 创建应用对象之间协作关系的行为通常称为装配,这也是依赖注入的本质. 1. 创建spring配置 spring是一个基于容器的框架.如果没有配置spri ...

  2. Spring入门(5)-自动装配Bean属性

    Spring入门(5)-自动装配Bean属性 本文介绍如何装配Bean属性. 0. 目录 ByName ByType constructor 默认自动装配 混合使用自动装配和显示装配 1. ByNam ...

  3. Spring总结 1.装配bean

    本随笔内容要点如下: 依赖注入 Spring装配bean的方式 条件化装配 一.依赖注入 我理解的依赖注入是这样的:所谓的依赖,就是对象所依赖的其他对象.Spring提供了一个bean容器,它负责创建 ...

  4. Spring 之自动化装配 bean 尝试

    [Spring之自动化装配bean尝试] 1.添加dependencies如下所示(不是每一个都用得到 <dependencies> <dependency> <grou ...

  5. spring的自动装配Bean与自动检测Bean

    spring可以通过编写XML来配置Bean,也可以通过使用spring的注解来装配Bean. 1.自动装配与自动检测: 自动装配:让spring自动识别如何装配bean的依赖关系,减少对<pr ...

  6. spring中自动装配bean

    首先用@Component注解类: package soundsystem: import org.springframework.stereotype.Component; @Component p ...

  7. Spring学习笔记—装配Bean

    在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...

  8. spring实战三装配bean之Bean的作用域以及初始化和销毁Bean

    1.Bean的作用域 所有的spring bean默认都是单例.当容器分配一个Bean时,不论是通过装配还是调用容器的getBean()方法,它总是返回Bean的同一个实例.有时候需要每次请求时都获得 ...

  9. Spring框架---IOC装配Bean

    IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicat ...

随机推荐

  1. 【转】Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址

    Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址 关注finddreams,一起分享,一起进步: http://blog.csdn.net/finddr ...

  2. 使用 gulp 压缩图片

    请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 压缩 图片文件可降低文件大小,提高图片加载速度. 找到规律转换为 gulp 代码 规律 找到 images/ ...

  3. CSS3实现鼠标经过图片时图片放大

    在鼠标经过图片时,图片被放大,而且还有个过渡的效果.... <!DOCTYPE html> <html> <head> <link href="cs ...

  4. 动态规划二:最长公共子序列(LCS)

    1.两个子序列:X={x1,x2....xm},Y={y1,y2....yn},设Z={z1,z2...zk}. 2.最优子结构: 1)如果xm=yn ,则zk=xm=yn且Zk-1是Xm-1和Yn- ...

  5. linux根目录下文件夹概览详解

    / 根目录 /bin 存放必要的命令 /boot 存放内核以及启动所需的文件等 /dev 存放设备文件 /etc 存放系统的配置文件 /home 用户文件的主目录,用户数据存放在其主目录中 /lib ...

  6. COW

    COW 时间限制: 1 Sec  内存限制: 64 MB提交: 41  解决: 18[提交][状态][讨论版] 题目描述 Bessie the cow has stumbled across an i ...

  7. 【AC自动机】【状压dp】hdu2825 Wireless Password

    f(i,j,S)表示当前字符串总长度为i,dp到AC自动机第j个结点,单词集合为S时的方案数. 要注意有点卡常数,注意代码里的注释. #include<cstdio> #include&l ...

  8. 7.2(java学习笔记)URL

    一.URL URL类表示统一资源定位符,指向万维网上“资源”的指针. 资源可以是简单的文件或目录,也可以是对更复杂对象的引用,比如对数据库或搜索引擎的查询. URL即是定位也是资源,定位到网络中一个具 ...

  9. Java高级架构师(一)第05节:TortoiseGit的本地使用

  10. iOS开发——给ImageView添加点击事件

          给ImageView添加点击事件   1: cell.pictureView.userInteractionEnabled = YES; 2: UITapGestureRecognizer ...