多實現類下注入指定的物件

2021-09-24 17:34:01 字數 791 閱讀 9825

當使用@autowired的時候,如果注入的物件是乙個介面的有多個實現,會報錯,找不到對應的bean 。 因為它沒法區分是哪個。

報錯因為mqconsumer有多個實現

原因是@autowired 的注入方式是 bytype 注入, 當要注入的型別在容器中存在多個時,spring是不知道要引入哪個實現類的

那麼在同一型別擁有多個實現類的時候,如何注入呢?這種場景下,只能通過 byname 注入的方式。可以使用 @resource 或 @qualifier 註解。

這個name為bean的id 比如如下

name就是agreementconsumerserviceimpltest ,如果不指定,那麼預設情況是小寫開頭的類名,

@resource 預設是按照 byname 的方式注入的, 如果通過 byname 的方式匹配不到,再按 bytype 的方式去匹配。

@qualifier 註解也是 byname的方式,但是與@resource 有區別,@qualifier 使用的是 類名。

注入介面與注入介面實現類的區別

最近在進行abp專案服務編寫時,發現乙個問題,在控制器中,即可以注入介面,也可以注入實現類,這點讓我有點迷惑,具體看下圖 在請教公司前輩predecessor之後,明白了,假設類a需要呼叫類b中的方法test 為了方便擴充套件,我們定義乙個介面宣告test方法,當我們把b注入到a中或者把介面注入到a...

類和物件 日期類的實現

include using namespace std class date int day days month if month 2 return day 全預設的建構函式 date int year 1900 int month 1,int day 1 else 拷貝建構函式 d2 d1 da...

spring基於註解方式實現物件的注入

1 什麼是註解 1 註解是 特殊標記,格式 註解名稱 屬性名稱 屬性值,屬性名稱 屬性值 2 使用註解,註解作用在類上面,方法上面,屬性上面 3 使用註解目的 簡化xml配置 2 spring針對bean管理中建立物件提供註解 1 component.2 serviceu 3 controller ...