spring心得6--自动装配知识点讲解及案例分析
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--自动装配知识点讲解及案例分析相关推荐
- Spring Boot(一) 自动装配--约定大于配置
欢迎去我的个人博客--晓坞坐坐,里面有很多有趣的文章,不止是技术.www.lixiaodongisme.com 随着spring体系的发展,我们在开发时需要配置整合的东西也越来越多,在进行开发时,繁琐 ...
- Spring 由构造函数自动装配
转载自 Spring 由构造函数自动装配 Spring 由构造函数自动装配 这种模式与 byType 非常相似,但它应用于构造器参数.Spring 容器看作 beans,在 XML 配置文件中 be ...
- Spring精华问答 | Spring Bean的自动装配是怎么回事?
戳蓝字"CSDN云计算"关注我们哦! Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Sprin ...
- Spring IOC容器-自动装配
1 autowire="byName" 根据名称自动装配,自动去IOC容器中找与属性名同名的引用的对象,并自动注入. <!-- ###############自动装配#### ...
- Spring中的自动装配和Autowired
彻底搞明白Spring中的自动装配和Autowired 一.自动装配 当Spring装配Bean属性时,有时候非常明确,就是需要将某个Bean的引用装配给指定属性.比如,如果我们的应用上下文中只有一个 ...
- Spring按类型自动装配注入数组、集合、Map
Spring按类型自动装配注入数组.集合.Map时,是把应用上下文中对应类型的bean装配进集合,而不是直接查找一个对应类型的集合然后注入.以下面这段代码为例: import org.springfr ...
- java 自动装载_java_详解Java的Spring框架下bean的自动装载方式,Spring容器可以自动装配相互协 - phpStudy...
详解Java的Spring框架下bean的自动装载方式 Spring容器可以自动装配相互协作bean之间的关系,这有助于减少对XML配置,而无需编写一个大的基于Spring应用程序的较多的和元素. 自 ...
- 风控策略调优讲解及案例分析
目录 1: 策略调优简介 1.1: 什么是策略调优 1.2: 策略调优应用场景 1.3: 策略调优的分类 1.4: 策略调优的主要步骤 2: A类调优讲解 2.1: 传统型调优 2.2: 临时型调优 ...
- Spring 自动装配详细讲解
一.什么是自动装配 1.自动装配是使用spring满足bean依赖的一种方法 2.spring会在应用上下文中为某个bean寻找其依赖的bean. 二.自动装配的方法有哪些 1.在xml中显式配置: ...
最新文章
- [摘录]第8章 与非美国人谈判的技巧
- 《像计算机科学家一样思考C++》导读
- vue商品列表滚动效果_如何处理前端超长列表
- 教程-Delphi中Spcomm使用属性及用法详解
- 每年考研计算机专硕和学硕报比例,各院校研招计划发布 专硕与学硕比例调整...
- Kafka消息丢失、重复消费的解决方案
- 为什么 APP 纷纷开发“暗黑模式”?优酷最佳实践总结
- python读取html_从零开始的Python爬虫教程(一):获取HTML文档
- IntelliJ IDEA for Mac 中 Java Web Project 默认的工件(Artifacts)输出目录
- JavaIO流加解密,AES对字符串加解密
- oracle无法打开日志组,ORA-00313:无法打开日志组1(线程 1)的成员_ORA-00312:
- [Ynoi2012]D1T3
- c语言 段错误 指针,求教为什么指针动态申请了空间,scanf的时候还会段错误
- python float 精度_谈谈关于Python里面小数点精度控制的问题
- 线程重命名java_线程重命名(Netty)和设计模式Decorator
- 机器学习EPD:概率密度估计
- 最新!2022 LaTeX安装教程(Windows)
- 深度置信网络python3实现
- 为什么 BI 软件都搞不定关联分析?带你分析分析
- 漫画:为什么不能打断程序员?