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. ORACLE中通过DBMS_CRYPTO包对表敏感字段进行加密

    http://doc.primeton.com/pages/viewpage.action?pageId=4917998

  2. WEB前端工程师整理的原生JavaScript经典百例

    一.原生JavaScript实现字符串长度截取 二.原生JavaScript获取域名主机 三.原生JavaScript转义html标签 四.原生JavaScript时间日期格式替换 Date.prot ...

  3. 使用jsonp进行跨域请求

    使用jsonp进行跨域请求 在实际的业务中很多时候需要用到跨域请求,然而jsonp为我们提供了一种非常方便的跨域请求的方式,具体实现代码如下: $.ajax({ type:"get" ...

  4. python VENV 环境 requirements.txt的生成、使用

    python项目 requirements.txt 文件,记录所有依赖包及其精确的版本号.用于新环境部署. 在虚拟环境中pip生成命令(正常环境类似): (venv) $ pip freeze > ...

  5. CF 834B The Festive Evening【差分+字符串处理】

    B. The Festive Evening time limit per test1 second memory limit per test256 megabytes inputstandard ...

  6. POJ2032 Building a Space Station(Kruskal)(并查集)

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7469   Accepte ...

  7. Linux命令之umount

    umount [-hV] umount -a [-dflnrv] [-t vfstype] [-O option] umount [-dflnrv] {dir|device} [-t vfstype] ...

  8. NLP初试牛刀,NLTK入门第一篇

    之前下载过一个PDF,书名是<用python进行自然语言处理>,挺有意思的,加上NLP和机器学习目前大热,想趁着暑假涉猎一下.于是开始了入门NLP之旅. 安装环境:Ubuntu14.04桌 ...

  9. NOI2013部分题解

    Day 1 T1:向量内积 直接暴力有60.发现将n个向量合成$n\times d$的矩阵$A$,然后求$A\times A^T$,得到的矩阵包含了所有的答案. 先考虑$k=2$,将答案矩阵和全1矩阵 ...

  10. [BZOJ 1212] L语言

    Link: BZOJ 1212 传送门 Solution: 看到字符串的多模式匹配,正解一般就是Trie树/AC自动机 此题由于每个模式串长度都很小,于是直接在Trie树上暴力就行了 先把所有模式串建 ...