spring心得6--自动装配知识点讲解及案例分析
来源:互联网 发布:微博登录网络异常 编辑:程序博客网 时间:2024/06/05 10:46
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/beans http://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/beans http://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/beans http://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>
- spring心得6--自动装配知识点讲解及案例分析
- spring心得9--自动代理知识点讲解及案例分析
- Spring中的自动装配案例分析
- Spring中的自动装配案例分析
- DRM 分析及案例讲解
- DRM 分析及案例讲解
- Spring自动装配、模版装配及定制Bean
- Spring自动装配及bean的生命周期
- 线程高级应用-心得1-传统线程和定时器讲解及案例分析
- 线程高级应用-心得2-同步锁讲解及面试题案例分析
- Spring Bean装配-自动装配
- spring心得8--AOP各种通知案例讲解.doc
- spring心得3--bean的生命周期结合案例详细讲解@普通期图解与uml图解一并分析
- 心得1--Cookie简介及案例分析
- 心得2--Session简介及案例分析
- Struts2入门案例,自动装配
- Struts2入门案例,自动装配
- Struts2入门案例,自动装配
- 心动C++情牵二叉树
- LINUX+ORACLE 字符集 语言 相关区别:LANG NLS_LANG NLS_LANGUAGE characterset
- SAP学习笔记(MM的基本流程)
- 剑指offer面试题30最小的k个数
- 找你妹时间2013-05-05(CSDN)
- spring心得6--自动装配知识点讲解及案例分析
- Android多媒体学习一:Android中Image的简单实例
- data mining (foreign blogs)
- python2.6写看门狗并发邮件
- 通过http请求传递xml流和接收xml流的代码示例
- 找啊找啊找GF --动态规划--类似采药
- ZOJ 2158/POJ 1789 - Truck History
- LPCTSTR与CString的类型转换
- Linux内核和驱动学习总结