Spring注入有三種方式:java
一、Set注入(使用最多)測試
二、構造器注入(使用很少)this
三、接口注入(幾乎不用)不作測試了spa
一、Set注入:所謂Set注入就是容器內部調用了bean的Set***方法,注意:xml文件中的名字必定要和對象中屬性的名字對應prototype
1
2
3
4
5
6
7
8
9
|
public
class
User {
private
Role role;
//注意:配置文件中property中name的名字跟這個屬性的名字必定要相同,否則會找不到
public
Role getRole() {
return
role;
}
public
void
setRole(Role role) {
this
.role = role;
}
}
|
配置文件配置方式code
1
2
3
4
5
|
<
bean
id
=
"role"
class
=
"com.fz.entity.Role"
></
bean
>
<
bean
name
=
"user"
class
=
"com.fz.entity.User"
scope
=
"prototype"
>
<
property
name
=
"role"
ref
=
"role"
></
property
>
</
bean
>
|
二、構造器注入:xml
1
2
3
4
5
6
7
8
9
10
|
public
class
Role {
private
int
id;
private
String roleName;
public
Role(
int
id, String roleName) {
super
();
this
.id = id;
this
.roleName = roleName;
}
}
|
構造方法注入須要傳參數:一、使用類型傳參數 二、使用索引傳參數(建議)對象
1
2
3
4
5
6
7
8
9
10
11
|
<
bean
id
=
"role"
class
=
"com.fz.entity.Role"
>
<!-- 一、使用類型給構造器傳參數 -->
<!-- <constructor-arg type="int" value="1"/>
<constructor-arg type="java.lang.String" value="管理員"/>
-->
<!-- 二、使用索引給構造器傳參數 -->
<
constructor-arg
index
=
"0"
value
=
"2"
/>
<
constructor-arg
index
=
"1"
value
=
"超級管理員"
/>
<!-- 類型和索引能夠結合使用,可是不能同時使用,也就是說構造器裏有幾個參數,這裏也就有幾個constructor-arg -->
</
bean
>
|
注意:在這裏<bean>標籤的名稱能夠用id也能夠用name索引
<bean id="user">和<bean name="user">結果都是同樣的,用id和用name的惟一區別就是,name能夠使用特殊字符,id則不行。接口
例如:
<bean name="user**" >這樣寫不會報錯,經過getBean也能夠獲取到
<bean id="user**" >這樣寫就直接會報錯