di(dependency injection),依賴注入,即元件之間的依賴關係由容器在應用系統執行期來決定,也就是由容器動態地將某種依賴關係的目標物件例項注入到應用系統中的各個關聯的元件之中。簡單來說,所謂的依賴注入其實就是,在建立物件的同時或之後,如何給物件的屬性賦值。如果物件由我們自己建立,這一切都變得很簡單,例如:
user user = new user();
user.setname(
"zs");
user.setage(18)
或者:
user user = new user(
"zs", 18)
;
如果物件由spring建立,那麼spring是怎麼給屬性賦值的?spring提供兩種方式為屬性賦值:
(1).set方式注入
(2).構造方法注入(spring大都使用這種方式)
案例:通過spring建立user例項,並為user例項的name和age屬性(普通屬性)賦值
1)建立user類,宣告name和age屬性,並新增對應的setter和getter方法,以及tostring方法
package com.company.spring;
public class user
public void setname(string name)
public integer getage(
) public void setage(integer age)
@override
public string tostring(
)}
<
!-- 宣告user類的bean例項 -->
"user" class=
"com.tedu.spring.user"
>
3)建立測試類—testdi
package com.company.spring;
public class testdi
}
<
!-- 宣告user類的bean例項 -->
"user" class=
"com.company.spring.user"
>
<
!-- 通過set方式為普通屬性賦值 -->
"name" value=
"zs"
>
"age" value=
"20"
>
其中name屬性的值,必須要和user類中所注入屬性對應的get方法的名字去掉get後首字母變為小寫的名字相同。
5)執行測試類testdi
1)建立userinfo類
package com.company.spring;
public class userinfo
<
!-- 宣告userinfo類的bean例項 -->
"userinfo" class=
"com.company.spring.userinfo"
>
3)修改user類,宣告userinfo屬性,新增對應的setter和getter方法,並重新生成tostring方法
public class user
public void setuserinfo(userinfo userinfo)
... public string tostring(
)}
<
!-- 宣告user類的bean例項 -->
"user" class=
"com.tedu.spring.user"
>
<
!-- 通過set方式為普通屬性賦值 -->
"name" value=
"韓少雲"
>
"age" value=
"20"
>
<
!-- 通過set方式為物件屬性賦值 -->
"userinfo" ref=
"userinfo"
>
由於此處是將userinfo物件作為值賦值給另乙個物件的屬性,因此ref屬性的值,為userinfo物件bean標籤的id值。物件屬性通過ref屬性注入。
5)執行測試類testdi
案例:通過spring建立user物件,並為user物件的屬性(name、age、userinfo屬性)賦值
1)為user類宣告建構函式
//宣告無參建構函式
public user(
)//宣告有參建構函式
public user(string name, integer age, userinfo userinfo)
"user" class=
"com.company.spring.user"
>
<
!-- 通過set方式為普通屬性賦值
"name" value=
"zs"
>
"age" value=
"20"
>
"userinfo" ref=
"userinfo"
>
-->
<
!-- 通過構造器中引數為屬性賦值 -->
"name" value=
"馬雲"
>
"age" value=
"35"
>
"userinfo" ref=
"userinfo"
>
<
!-- 宣告userinfo類的bean例項 -->
"userinfo" class=
"com.company.spring.userinfo"
>
其中,constructor-arg標籤name屬性的值必須和建構函式中引數的名字相同.同樣的,普通屬性直接通過value注入即可;物件屬性通過ref屬性注入。
3)執行測試類testdi
Spring DI 依賴注入
實體類computer mobilephone student public class computer implements serializable public void setmainboard string mainboard public string gethdd public vo...
Spring DI依賴注入
1 spring建立的bean預設是singleton模式,會以非懶載入的方式載入,即在ioc容器初始化時,容器呼叫getbean 方法,對bean進行例項化,同時觸發依賴注入。2 如果指定bean為prototype模式,會以懶載入的方式載入,在使用者第一次呼叫getbean 方法時觸發依賴注入。...
初識spring,DI依賴注入
spring的依賴注入是指在spring建立物件的過程中,將物件的依賴屬性通過配置進行注入,我們先寫個bean public class user public void setusername string username public string getpassword public voi...