一.目前使用最广泛的 @Autowired:自动装配
基于@Autowired的自动装配,默认是根据类型注入,可以用于构造器、接口、方法注入,使用方式如下:
@Autowired
构造方法、方法、接口
@Autowired默认是根据参数类型进行自动装配,且必须有一个Bean候选者注入默认required=true,如果允许出现0个Bean候选者需要设置属性“required=false”,“required”属性含义和@Required一样,只是@Required只适用于基于XML配置的setter注入方式,只能打在setting方法上。
1)、构造器注入:通过将@Autowired注解放在构造器上来完成构造器注入,默认构造器参数通过类型自动装配,如下所示:
public class Test1 {
private MessageInterface message;
@Autowired //构造器注入
private Test1(MessageInterface message) {
this.message = message;
}
//省略getter和setter
}
1
public class Test1 {
2
private MessageInterface message;
3
//构造器注入
4
private Test1(MessageInterface message) {
5
this.message = message;
6
}
7
//省略getter和setter
8
}
(2)、接口注入:通过将@Autowired注解放在构造器上来完成接口注入。
public class Test2 {
@Autowired //接口注入
private MessageInterface messageInterface;
//省略getter和setter
}
1
public class Test2 {
2
//接口注入
3
private MessageInterface messageInterface;
4
//省略getter和setter
5
}
(3)、方法参数注入:通过将@Autowired注解放在方法上来完成方法参数注入。
public class Test3 {
private MessageInterface message;
@Autowired //setter方法注入
public void setMessage(MessageInterface message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
11
1
public class Test3 {
2
private MessageInterface message;
3
4
//setter方法注入
5
public void setMessage(MessageInterface message) {
6
this.message = message;
7
}
8
public String getMessage() {
9
return message;
10
}
11
}
public class Test4 {
private MessageInterface message; //
private List<String> list;
@Autowired(required = true) //任意一个或多个参数方法注入
private void initMessage(MessageInterface message, ArrayList<String> list) {
this.message = message;
this.list = list;
}
//省略getter和setter
}
10
1
public class Test4 {
2
private MessageInterface message; //
3
private List<String> list;
4
required = true) //任意一个或多个参数方法注入 (
5
private void initMessage(MessageInterface message, ArrayList<String> list) {
6
this.message = message;
7
this.list = list;
8
}
9
//省略getter和setter
10
}