一.目前使用最廣泛的 @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
}