如果乙個介面存在多個實現類,而且多個實現類都被注入到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...