1、要想实现自动装配,必须要有自动装配的支持
xmlns:context="http://www.springframework.org/schema/context"
...
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--开启自动装配-->
<context:annotation-config/>
2、自定装配可以理解为我们在spring配置文件里面创建的bean与我们创建的具体对象之间进行匹配。反方向理解一下,例如下面这个bean对象,你怎么知道他一定是一个Cat对象?这就要讲到自动装配。
<bean id="cat" class="com.kuang.pojo.Cat"/>
3、自动装配的顺序(原理)
先根据类型装配:
1、只有一个:直接转配置成
2、没有该类型:报错
3、有多个:
a、再根据变量名作为id查找:找到成功装配
b、找不到报错
举个例子:假如说我们有一个Cat类 Dog类还有一个People类,people类里面引用了其他两个类
接下来完成自动装配
public class Cat {
public void shot(){
System.out.println("喵喵喵~");
}
}
public class Dog {
public void shot(){
System.out.println("汪汪汪~");
}
}
public class People {
@Autowired
// @Qualifier(value = "cat2")
private Cat cat;
@Autowired
private Dog dog;
private String name;
@Override
public String toString() {
return "People{" +
"cat=" + cat +
", dog=" + dog +
", name='" + name + '\'' +
'}';
}
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我们在xml里面配置了一下几个bean对象
<bean id="cat2" class="com.kuang.pojo.Cat"/> <!--1-->
<bean id="cat" class="com.kuang.pojo.Cat"/><!--2-->
<bean id="dog" class="com.kuang.pojo.Dog"/><!--3-->
<bean id="dog2" class="com.kuang.pojo.Dog"/><!--4-->
<bean id="people" class="com.kuang.pojo.People"/><!--5-->
根据spring自动装配的规则,要想使得这些bean对象有意义,首先要根据类型要看类型,不难看出分别有两个Cat Dog类,接下来在找名字(这里的名字是指变量名)people类里面的成员变量名
不难看出cat dog都有,那么成功装配
@Qualifier(value = "cat2")这个是啥意思?
@Autowired
@Qualifier(value = "cat2")
指定装配,这俩配合使用。装配cat2。
@Autowired(required = false)这个又是干啥的?
这个的意思是指没必要一定装配成功, 一旦使用了这个注解,那么我们就可以理解为装配不成功(找不到),这个对象就为空。
(先写辣么多!明天再加)