引用类型自动注入
spring根据byName,byType
规则给引用类型赋值
对于引用类型属性的注入,也可不在配置文件中显示的注入。可以通过为
标签设置 autowire 属性值,为引用类型属性进行隐式自动注入(默 认是不自动注入引用类型属性)。
根据自动注入判断标准的不同,可以分为两种:
- byName:根据名称自动注入
- byType: 根据类型自动注入
1.byName(按名称注入)
java类中引用类型的属性名称和spring容器中bean的id名称一样,且数据类型一样的, 这样的bean能够赋值给引用类型。
语法:
<bean id&#61;"xxx" class&#61;"yy" autowire&#61;"byName">简单类型属性赋值
bean>
2.byType&#xff08;按类型注入&#xff09;
java类中引用类型的数据类型和bean的class是同源的&#xff0c;这些的bean能够赋值给引用类型。
同源关系&#xff1a;
1.java中引用类型的数据类型和bean的class值是一样的。
2. java中引用类型的数据类型和bean的class值是父子类关系的。
3. java中引用类型的数据类型和bean的class值是接口和实现类关系的。
语法&#xff1a;
<bean id&#61;"xxx" class&#61;"yy" autowire&#61;"byType">简单类型属性赋值
bean>
1>第一种同源关系&#xff1a;java中引用类型的数据类型和bean的class值是一样的。
2>第二种同源关系&#xff1a; java中引用类型的数据类型和bean的class值是父子类关系的。
注意&#xff1a; 在xml配置文件中&#xff0c; 符合条件的对象&#xff0c;只能有一个。多余一个是报错的。&#x1f447;
运行test----报错:
Caused by:
org.springframework.beans.factory.NoUniqueBeanDefinitionException:
No qualifying bean of type ‘com.bjpowernode.bao5.School’ available:
expected single matching bean but found 2: myschool,primarySchool
3>第三种同源关系:java中引用类型的数据类型和bean的class值是接口和实现类关系的。