1.自动装配

   spring3.2以上版本有四种自动装配类型:

1).byName:寻找和属性名相同的bean,若找不到,则装不上。

2).byType:寻找和属性类型相同的bean,找不到,装不上,找到多个抛异常。

3).constructor:按照参数的类型装配;找不到,装不上;在有与bean实例类中属性相同的id时,即使存在同一个类型的多个bean也不会抛异常,否则反之找到多个就会抛异常。

4)no:不使用自动装配

自动装配主要通过bean标签的autowire属性配置相应的自动装配方式;使用byType和constructor自动装配时,若找到多个符合条件的bean,会报异常,因此最好的方式是不用自动组装

2.自动装配案例剖析

下面主要列出相关的spring配置文件和主要的bean,用来测试的测试类和辅助就不再赘述了;

主要的bean实例
package www.csdn.spring.autowire;public class EmpBean {private String name;private DeptBean deptBean;private CompBean compBean;public void setName(String name) {this.name = name;}/** public void setDeptBean(DeptBean deptBean) { this.deptBean = deptBean; }* public void setCompBean(CompBean compBean) { this.compBean = compBean; }*/@Overridepublic String toString() {return "EmpBean [name=" + name + ", deptBean=" + deptBean+ ", compBean=" + compBean + "]";}public EmpBean(DeptBean deptBean, CompBean compBean) {super();this.deptBean = deptBean;this.compBean = compBean;}}按byName自动装配的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="compBean" class="www.csdn.spring.autowire.CompBean"><property name="name" value="DELL"/></bean><bean id="deptBean" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><!-- 使用autoWrie自动装配,改属性值byName;能让其自动装配的前提是bean实例中的属性值名称与配置文件中引入的类型id一致--><bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byName"><property name="name" value="杨凯"/>
<!--           <property name="comp" ref="compBean"/><property name="dept" ref="deptBean"/> --></bean>
</beans>
按byType自动装配的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="compBean" class="www.csdn.spring.autowire.CompBean"><property name="name" value="DELL"/></bean><bean id="deptBean" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><!-- 这里只能出现一个deotBean,id名不一样但是类型一样,都是deptBean实体的;id="deptBean"或同类型的不同id都会抛异常<bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean> --><!-- 使用autoWrie自动装配,改属性值byType;按类型自动装配,前提是同一个类型的只能有一个--><bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="byType"><property name="name" value="杨凯"/>
<!--           <property name="comp" ref="compBean"/><property name="dept" ref="deptBean"/> --></bean>
</beans>按constructor自动装配的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="compBean" class="www.csdn.spring.autowire.CompBean"><property name="name" value="DELL"/></bean><!-- 在spring3.2以上版本中:使用构造器自动装配时,如果有一个id与bean实例中的属性名相同的配置bean存在,虽然构造器自动装配是按类型自动装配的,但是即使有多个相同类型的bean存在也不受影响;受影响的情况是:没有与bean实例中的属性名相同的配置bean存在,又有多个相同类型的bean配置,就会抛异常--><bean id="deptBean" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><bean id="deptBean1" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean><bean id="deptBean2" class="www.csdn.spring.autowire.DeptBean"><property name="name" value="销售部门"/></bean> <!-- 使用autoWrie自动装配,改属性值constructor;构造器自动装配就是按类型自动装配beam实例中必须结合构造器使用,如果没有构造器自动装配后注入不进去值,取出为空值--><bean id="empBean" class="www.csdn.spring.autowire.EmpBean" autowire="constructor"><property name="name" value="杨凯"/>
<!--           <property name="comp" ref="compBean"/><property name="dept" ref="deptBean"/> --></bean>
</beans>

转载于:https://www.cnblogs.com/yangkai-cn/archive/2013/05/05/4017305.html

spring心得6--自动装配知识点讲解及案例分析相关推荐

  1. Spring Boot(一) 自动装配--约定大于配置

    欢迎去我的个人博客--晓坞坐坐,里面有很多有趣的文章,不止是技术.www.lixiaodongisme.com 随着spring体系的发展,我们在开发时需要配置整合的东西也越来越多,在进行开发时,繁琐 ...

  2. Spring 由构造函数自动装配

    转载自  Spring 由构造函数自动装配 Spring 由构造函数自动装配 这种模式与 byType 非常相似,但它应用于构造器参数.Spring 容器看作 beans,在 XML 配置文件中 be ...

  3. Spring精华问答 | Spring Bean的自动装配是怎么回事?

    戳蓝字"CSDN云计算"关注我们哦! Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Sprin ...

  4. Spring IOC容器-自动装配

    1 autowire="byName" 根据名称自动装配,自动去IOC容器中找与属性名同名的引用的对象,并自动注入. <!-- ###############自动装配#### ...

  5. Spring中的自动装配和Autowired

    彻底搞明白Spring中的自动装配和Autowired 一.自动装配 当Spring装配Bean属性时,有时候非常明确,就是需要将某个Bean的引用装配给指定属性.比如,如果我们的应用上下文中只有一个 ...

  6. Spring按类型自动装配注入数组、集合、Map

    Spring按类型自动装配注入数组.集合.Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入.以下面这段代码为例: import org.springfr ...

  7. java 自动装载_java_详解Java的Spring框架下bean的自动装载方式,Spring容器可以自动装配相互协 - phpStudy...

    详解Java的Spring框架下bean的自动装载方式 Spring容器可以自动装配相互协作bean之间的关系,这有助于减少对XML配置,而无需编写一个大的基于Spring应用程序的较多的和元素. 自 ...

  8. 风控策略调优讲解及案例分析

    目录 1: 策略调优简介 1.1: 什么是策略调优 1.2: 策略调优应用场景 1.3: 策略调优的分类 1.4: 策略调优的主要步骤 2: A类调优讲解 2.1: 传统型调优 2.2: 临时型调优 ...

  9. Spring 自动装配详细讲解

    一.什么是自动装配 1.自动装配是使用spring满足bean依赖的一种方法 2.spring会在应用上下文中为某个bean寻找其依赖的bean. 二.自动装配的方法有哪些 1.在xml中显式配置: ...

最新文章

  1. [摘录]第8章 与非美国人谈判的技巧
  2. 《像计算机科学家一样思考C++》导读
  3. vue商品列表滚动效果_如何处理前端超长列表
  4. 教程-Delphi中Spcomm使用属性及用法详解
  5. 每年考研计算机专硕和学硕报比例,各院校研招计划发布 专硕与学硕比例调整...
  6. Kafka消息丢失、重复消费的解决方案
  7. 为什么 APP 纷纷开发“暗黑模式”?优酷最佳实践总结
  8. python读取html_从零开始的Python爬虫教程(一):获取HTML文档
  9. IntelliJ IDEA for Mac 中 Java Web Project 默认的工件(Artifacts)输出目录
  10. JavaIO流加解密,AES对字符串加解密
  11. oracle无法打开日志组,ORA-00313:无法打开日志组1(线程 1)的成员_ORA-00312:
  12. [Ynoi2012]D1T3
  13. c语言 段错误 指针,求教为什么指针动态申请了空间,scanf的时候还会段错误
  14. python float 精度_谈谈关于Python里面小数点精度控制的问题
  15. 线程重命名java_线程重命名(Netty)和设计模式Decorator
  16. 机器学习EPD:概率密度估计
  17. 最新!2022 LaTeX安装教程(Windows)
  18. 深度置信网络python3实现
  19. 为什么 BI 软件都搞不定关联分析?带你分析分析
  20. 漫画:为什么不能打断程序员?

热门文章

  1. 动手学PaddlePaddle(5):迁移学习
  2. 描写火车站场景_关于描写火车站的句子
  3. 关闭 Pycharm 更新提示
  4. mysql单表简单排序查询
  5. Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:
  6. Toad for Oracle 导入MIP.dmp文件时:报内存不足时的解决办法:
  7. 剑指offer:39-42记录
  8. 李牛(Linux)打包
  9. 游戏服务器架构-设计模式之观察者模式和发布订阅模式真的一样吗?
  10. caffe安装篇(一)