假如乙個類要呼叫另乙個類,那麼我們之前的方法是把被呼叫的類在中呼叫它。如圖:
有了自動裝配就不用麻煩了,接下來介紹自動裝配bean。
首先自動裝配bean需要中呼叫autowire如同
autowire中有6個屬性分別是byname, bytype,constructor,autodetect,defualt,no這六個屬性
接下來配合**一一講解
先看兩個類檔案
package it.autowire;
public class person
//當xml檔案中autowire的引數是constructor時,則會呼叫建構函式中型別與被呼叫bean型別匹配的bean
public person(dog dog)
public string getname()
public void setname(string name)
public dog getdog()
public void setdog(dog dog)
package it.autowire;
public class dog
public void setname(string name)
system.out.println(per.getname()+"的狗是"+per.getdog().getname());//使用紅體方法時,需要呼叫dog物件}}
byname:
會查詢在呼叫類呼叫的類的型別的變數相同的物件名,並實現匹配,並完成裝配(在person類中dog物件的變數dog就和xml檔案中id="dog"相匹配並呼叫
xml檔案
尋找屬性型別相同的bean,找不到,裝不上,找到多個拋異常。變數dog的型別是dog,所以和在xml檔案型別是dog的dog相匹配完成注入,如果有多個可以對不需要進行自動裝配的bean設定屬性autowire-candidate="false"
查詢和bean的構造引數一致的乙個或 多個bean,若找不到,拋異常。按照引數的型別裝配
這個型別在類檔案中會有點變化
public person(dog dog) //需要這樣乙個建構函式,他的引數被呼叫的型別,且完成賦值
如果物件沒有無引數的構造方法,那麼自動選擇constructor的自動裝配方式進行構造注入。如果物件含有無引數的構造方法,那麼自動選擇bytype的自動裝配方式進行setter注入。
default這個需要在不裝配
Spring 自動裝配bean學習筆記
當實體類屬性需要依賴特別多的其他類時,bean的自動裝配可以幫我們減少xml中許多的配置。package com.huang.pojo public class people public void setcat cat cat public dog getdog public void setdo...
Bean自動裝配
spring ioc容器可以自動裝配 autowire 來協作bean之間的相互聯絡。autowire一共有五種型別。由於autowire可以針對單個bean進行設定,因此可以讓有些bean使用autowire,有些bean不採用。autowire的方便之處在減少或者消除屬性或構造器引數的設定,這樣...
Bean 的自動裝配
1 預設 xml 配置檔案中 beans 的 auto wire 屬性設定為 預設,需要對beans進行指定 2 byname xml 配置檔案中 beans 的 auto wire 屬性設定為 byname。然後,它嘗試將它的屬性與配置檔案中定義為相同名稱的 beans 進行匹配和連線。如果找到匹...