Spring自动装配
环境搭建:
一个人有两只宠物,一只猫一只狗。
public class People {
private Cat cat;
private Dog dog;
private String name;
//此处省略构造器 get set toString方法
}
public class Dog {
public void shout(){
System.out.println("旺旺~~");
}
}
public class Cat {
public void shout(){
System.out.println("喵~~");
}
}
1、ByName自动装配
<bean id="dog" class="com.fan.autowired.Dog"/>
<bean id="cat" class="com.fan.autowired.Cat"/>
<bean id="people" class="com.fan.autowired.People" autowire="byName">
<property name="name" value="fan"/>
</bean>
2、ByType自动装配
<bean id="dog" class="com.fan.autowired.Dog"/>
<bean id="cat" class="com.fan.autowired.Cat"/>
<bean id="people" class="com.fan.autowired.People" autowire="byType">
<property name="name" value="fan"/>
</bean>
总结:
- ByName需要保证所有bean的id唯一,并且需要自动注入的属性的set方法值一致!
- ByType需要保证所有bean的class唯一,并且需要自动注入的属性的类型一致!
3、使用注解实现自动装配
使用注解须知:
-
需要导入约束 context约束
-
配置注解的支持
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <context:annotation-config/> </beans>
-
使用注解
public class People { @Autowired private Cat cat; @Autowired private Dog dog; private String name; //省略 get set toString方法 }
-
配合@Qualifier(value = “xxx”)使用可以指定注入bean
public class People { @Autowired @Qualifier(value = "cat") private Cat cat; @Autowired private Dog dog; private String name; //省略 get set toString方法 }
-
除了@Autowired外还可以使用@Resource()注解进行自动装配
@Resource(name = "dog") private Dog dog;