Spring依賴的自動注入

2021-10-08 04:52:35 字數 1921 閱讀 5890

一、準備類

public

inte***ce

userdao

public

class

userdaoimpl

implements

userdao

}

public

class

userdaoimpl2

implements

userdao

}

public

inte***ce

userservice

public

class

userserviceimpl

implements

userservice

public

void

setdao

(userdao dao)

}

二、實現方法
public

class

beanfactory

public

void

par***ml

(string xml)

throws cjxspringexception

for(iterator

itfirlst = elementroot.

elementiterator()

; itfirlst.

hasnext()

;)else}if

(object==null)}if

(count >1)

else}}

}}if(object==null)

map.

put(beanname,object);}

}catch

(exception e)

system.out.

println

(map);}

public object getbean

(string beanname)

}

三、配置檔案
<

?xml version=

"1.0" encoding=

"utf-8"

?>

="bytype"

>

"dao"

class

="com.cjx.spring.dao.userdaoimpl"

>

<

/bean>

"service"

class

="com.cjx.spring.service.userserviceimpl"

>

<

/bean>

<

/beans>

四、總結

**的邏輯是,獲取根節點並判斷是否配置的bytype,如果配置了bytype,開啟bytype自動注入。遍歷根節點下的所有二級標籤,這裡的二級標籤為bean,下面就用bean標籤來替換二級標籤,比較容易理解。拿到第乙個bean標籤,就可以拿到標籤配置的id和class的屬性值,緊接著判斷是否配置的property或者constructor標籤,如果配置了就獲取標籤的name和ref屬性,例項化該bean物件,並通過ref屬性從ioc容器中獲取要注入的物件,並通過反射的形式將物件注入。如果這個bean沒有配置property或者constructor標籤,但是開啟了bytype,就獲取該bean中所有的屬性,遍歷判斷容器中有多少個該屬性的實現類,如果有多個丟擲一樣,如果為1個,就自動注入。(**沒有判斷為0的情況,如果為0,可以提示該屬性的實現類找不到)。整套邏輯也是和spring一樣,手動配置優先於自動配置,如果在bean標籤配置了property或者構造注入的,優先於自動配置的。

spring 依賴注入 Spring依賴注入

依賴注入 dependency injection,簡稱di 與控制反轉 ioc 的含義相同控制反 在使用spring框架之後,物件的例項不再由呼叫者來建立,而是由spring容器來建立,spring容器會負責控制程式之間的關係,而不是由呼叫者的程式 直接控制,這樣控制權由應用程式轉移到了sprin...

Spring依賴注入

所謂依賴注入,是指在程式執行過程中,如果需要呼叫另乙個物件協助時,無須在 中建立按被呼叫者,而是依賴外部注入。spring 的依賴注入對呼叫者和被呼叫者幾乎沒有任何要求,完全支援對 pojo 之間依賴關係的管理。依賴注入的兩種方式 1 設值注入 設值注入是指通過 setter 方法傳入被呼叫者的例項...

SPring依賴注入

所謂依賴注入,是指在程式執行過程中,如果需要呼叫另乙個物件協助時,無須在 中建立按被呼叫者,而是依賴外部注入。spring的依賴注入對呼叫者和被呼叫者幾乎沒有任何要求,完全支援對pojo之間依賴關係的管理。依賴注入的兩種方式 1 設值注入 設值注入是指通過setter方法傳入被呼叫者的例項。這種注入...