[Spring]Bean的自动装配
来源:互联网 发布:网络安全法的特征是 编辑:程序博客网 时间:2024/04/27 23:56
Spring支持5种自动装配模式,如下:
1、no ——默认情况下,不自动装配,通过“ref”attribute手动设定。
2、buName ——根据Property的Name自动装配,如果一个bean的name,和另一个bean中的Property的name相同,则自动装配这个bean到Property中。
3、byType ——根据Property的数据类型(Type)自动装配,如果一个bean的数据类型,兼容另一个bean中Property的数据类型,则自动装配。
4、constructor ——根据构造函数参数的数据类型,进行byType模式的自动装配。
5、autodetect ——如果发现默认的构造函数,用constructor模式,否则,用byType模式。
第一种:no,默认情况下通过ref属性进行装配
<bean id="user4" class="com.bean.User"> <property name="users" ref="userList"></property></bean>
第二种:byName,Spring会根据Bean中的属性名与XML配置文件中Bean的Id进行匹配,然后通过Set方法进行注入。
<bean id="teacher" class="com.bean.Teacher"></bean><bean id="student" class="com.bean.Student" autowire="byName"></bean>
下面这种情况是注入不进去的,因为Student中Teacher的属性叫teacher,与Bean的ID对应不上
<bean id="teacher_test" class="com.bean.Teacher"></bean><bean id="student" class="com.bean.Student" autowire="byName"></bean>
第三种:byType,Sprng会根据XML中配置的Bean的类型进行匹配,通过Set方法进行注入
<bean id="teacher" class="com.bean.Teacher"></bean><bean id="student1" class="com.bean.Student" autowire="byType"></bean>
但是如果配置了多个类型相同的Bean,会抛出异常,如下:
<bean id="teacher1" class="com.bean.Teacher"></bean><bean id="teacher2" class="com.bean.Teacher2"></bean><bean id="student1" class="com.bean.Student" autowire="byType"></bean>
第四种:constructor,Spring会根据类型相同的Bean通过构造方法public Student(Teacher teacher)将其注入,如果没有此构造,注入失败。
<bean id="teacher" class="com.bean.Teacher"></bean><bean id="student3" class="com.bean.Student" autowire="constructor"></bean>
constructor与byType一样,如果XML中出现了多个相同类型的Bean,则注入失败,抛出异常,如下:
<bean id="teacher" class="com.bean.Teacher"></bean><bean id="teacher2" class="com.bean.Teacher2"></bean><bean id="student3" class="com.bean.Student" autowire="constructor"></bean>
第五种:autodetect,Spring会先寻找Customer中是否有默认的构造函数,如果有相当于上边的’constructor’这种情况,用构造函数注入,否则,用’byType’这种方式注入,所以,此例中通过调用public Student(Teacher teacher)注入。
<bean id="teacher" class="com.bean.Teacher"></bean><bean id="student4" class="com.bean.Student" autowire="autodetect"></bean>
Java实体
public class Teacher { @Override public String toString() { return "Teacher"; }}
public class Student { private Teacher teacher; public Student(Teacher teacher) { super(); this.teacher = teacher; } public Student() { super(); } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } @Override public String toString() { return "Student [teacher=" + teacher + "]"; }}
- Spring Bean的装配 -- 自动装配
- [Spring]Bean的自动装配
- # Spring Bean 的自动装配
- spring bean的自动装配
- spring bean的自动装配
- Spring的自动装配Bean
- Spring bean的自动装配
- 【Spring】Bean的自动装配
- Spring Bean的自动装配
- Spring bean的自动装配
- spring <bean>的自动装配
- Spring Bean装配-自动装配
- Spring Bean--自动装配
- Spring Bean 自动装配
- spring自动装配bean
- 关于Spring的bean自动装配
- Spring XML配置自动装配的Bean
- spring中bean的自动装配(6)
- GUVCview-Ubuntu下视频录像更简单
- 关于HTTP和HTTPS
- Git 基本用法
- codevs 1519 过路费
- android关闭硬件加速的方法:
- [Spring]Bean的自动装配
- js中replaceAll
- Android MVP架构浅析
- nginx打开网站提示 500错误解决方案 ([error] 1824#100074: *6 FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of 13
- 利用浏览器获得当前时间戳
- 可编辑文本框的转换
- 配置 VIM 的 HLSL 、 GLSL 的语法高亮文件
- jQuery请求json并绑定到表格
- 深入理解RunLoop