自動裝配說明
spring的自動裝配需要從兩個角度來實現,或者說是兩個操作:
元件掃瞄和自動裝配組合發揮巨大威力,使得顯示的配置降低到最少。
public
class
cat}
public
class
dog}
public
class
people
public
void
setcat
(cat cat)
public dog getdog()
public
void
setdog
(dog dog)
public string getname()
public
void
setname
(string name)
@override
public string tostring()
';}}
測試
bean
"dog"
class
="com.zh.pojo.dog"
/>
"cat"
class
="com.zh.pojo.cat"
/>
"people"
class
="com.zh.pojo.people"
>
name
="name"
value
="伊澤瑞爾"
由於在手動配置xml過程中,常常發生字母缺漏和大小寫等錯誤,而無法對其進行檢查,使得開發效率降低。
採用自動裝配將避免這些錯誤,並且使配置簡單化。
修改bean配置,增加乙個屬性 autowire=「byname」
"people"
class
="com.zh.pojo.people"
autowire
="byname"
>
name
="name"
value
="伊澤瑞爾"
/>
bean
>
測試依然成功
將 cat 的bean id修改為 cat*** 則出現空指標異常
注意!使用byname實現自動裝配,物件名必須與beanid相同。
"dog"
class
="com.zh.pojo.dog"
/>
"cat"
class
="com.zh.pojo.cat"
/>
"people"
class
="com.zh.pojo.people"
autowire
="bytype"
>
name
="name"
value
="伊澤瑞爾"
/>
bean
>
注意!
使用autowire bytype首先需要保證:同一型別的物件,在spring容器中唯一。如果不唯一,會報不唯一的異常。
準備工作
在spring配置檔案中引入context檔案頭,以及開啟註解支援
<?xml version="1.0" encoding="utf-8"?>
xmlns
=""xmlns:xsi
=""xmlns:context
=""xsi:schemalocation
="/spring-beans.xsd
/spring-context.xsd"
>
<
context:annotation-config
/>
"dog"
class
="com.zh.pojo.dog"
/>
"cat"
class
="com.zh.pojo.cat"
/>
"cat2"
class
="com.zh.pojo.cat"
/>
"people"
class
="com.zh.pojo.people"
autowire
="bytype"
/>
beans
>
@autowired@qualifier這兩個註解可以配合使用,但一般開發情況下只需要@autowired註解即可
測試:
public
class
people
public dog getdog()
public string getname()
@override
public string tostring()
';}}
使用@autowired註解時,由於是運用反射機制,所以可以不用寫set方法。
輸出
實體類
public
class
user
beans.xml
"dog"
class
="com.kuang.pojo.dog"
/>
"cat1"
class
="com.kuang.pojo.cat"
/>
"cat2"
class
="com.kuang.pojo.cat"
/>
@autowired與@resource異同:
1、@autowired與@resource都可以用來裝配bean。都可以寫在字段上,或寫在setter方法上。
2、@autowired預設按型別裝配(屬於spring規範),預設情況下必須要求依賴物件必須存在,如果要允許null 值,可以設定它的required屬性為false,如:@autowired(required=false) ,如果我們想使用名稱裝配可以結合@qualifier註解進行使用
3、@resource(屬於j2ee復返),預設按照名稱進行裝配,名稱可以通過name屬性進行指定。如果沒有指定name屬性,當註解寫在字段上時,預設取欄位名進行按照名稱查詢,如果註解寫在setter方法上預設取屬性名進行裝配。當找不到與名稱匹配的bean時才按照型別進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。
它們的作用相同都是用註解方式注入物件,但執行順序不同。@autowired先bytype,@resource先byname。
spring 自動裝配bean
在spring中,支援 5 自動裝配模式。public class customer public void setperson person person 要啟用 autowired,必須註冊 autowiredannotationbeanpostprocessor 可以使用在 set方法 構造方...
Spring自動裝配bean
configuration顯示這是乙個配置類,componentscan無其他配置則預設在該類所在包內開啟元件掃瞄,若有多個包則寫成 componentscan basepackages 若有多個類,則 componentscan basepackagesclasses package sounds...
Spring的bean自動裝配
基於xml自動裝配 使用設值注入方式裝配person例項 person1 class com.mengma.assembly.person name name value zhangsan name age value 20 bean 使用構造方法裝配person例項 person2 class c...