(Spring)自動裝配bean

2021-10-08 05:15:31 字數 3870 閱讀 4860

自動裝配說明

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...