在bean中注入同一介面多個實現類的bean

2021-09-27 07:47:21 字數 1243 閱讀 5629

如果乙個介面存在多個實現類,而且多個實現類都被注入到spring容器中了,如果需要將它們都注入到同乙個bean中或者想要動態獲取某乙個bean的時候會發現一些問題,首先是如果只是單獨註冊乙個bean而且還是按照"bytype"註冊的,那麼還出現異常。

這個時候如果一定要將多個bean都注入在乙個bean中注入同乙個介面的多個實現類的方法,大體思路有兩種,一種是通過map將多個bean都統一注入到bean中,還有一種是通過spring的上下文物件將需要的bean拿出來。

map

假設有如下介面

public

inte***ce

test

有如下兩個實現類需要注入spring容器

@component

public

class

testa

implements

test

}

@component

public

class

testb

implements

test

}

可以通過map將兩者都注入bean中,可以通過map的key拿出對應的bean

@component

public

class

testservice

else

if(str.

equals

("b"))

}}

@component

public

class

testservice

implements

else

if(str.

equals

("b"))

}@override

public

void

throws bean***ception

}

這樣就可以得到指定的bean

public

static

void

main

(string[

] args)

結果

testa

Spring 同一介面注入多個bean實現

如果同乙個介面有多個bean實現類,spring在執行時會出現如下異常 required a single bean,but 2 were found marking one of the beans as primary,updating the consumer to accept multip...

spring抽象類中注入bean

在使用spring的時候,有時由於設計的需要,需要使用抽象類 比如模板方法模式 但在抽象類中實現方法是需要依賴其他的介面或類的方法,這時就需要對依賴的介面或類進行注入,需要注意以下內容 在抽象類中需要注入 autowire 在繼承了該抽象類的子類中同樣需要再次注入。比如當前專案中,使用者購買物品的模...

shiro 中注入 bean,導致aop 失效

尋找方式,日誌設定trace級別,檢視失效aspect的bean日誌,找到了一句話 2019 09 17 11 36 36,959 main info o.s.c.s.postprocessorregistrationdelegate beanpostprocessorchecker bean sy...