SpringBoot Resource注入的坑

2021-10-02 08:03:55 字數 2536 閱讀 9909

雙kafka消費者配置

(1)第乙個kafka

public class onekafkaconfig 

@bean

public consume***ctory oneconsume***ctory(@resource kafkaproperties onekafkaproperties)

@configurationproperties(prefix = "sys.kafka.one")

@bean

public kafkaproperties onekafkaproperties()

(2)第二個kafka

public class twokafkaconfig 

@primary

@bean

public consume***ctory twoconsume***ctory(@resource kafkaproperties twokafkaproperties)

@primary

@configurationproperties(prefix = "sys.kafka.two")

@bean

public kafkaproperties twokafkaproperties()

}

啟動專案,發現兩個kafka的消費者都是指向同乙個kafka,@resource沒有根據名字注入所以依賴的bean。

從debug模式下中發現:twokafkaproperties、twoconsume***ctory、twokafkafactory依次建立。然後先是twoconsume***ctory先注入建立onekafkafactory,而twokafkaproperties bean先注入建立oneconsume***ctory,最後onekafkaproperties才開始建立。

原因:@resource注入之前先根據名字查詢bean,找不到才根據型別進行bean注入。因為twoconsume***ctory為@primary優先順序高先建立,onekafkafactory建立的時候oneconsume***ctory 還沒有建立,所以根據型別注入了twoconsume***ctory。

建議:多個型別相同的bean建立不要使用@resource,應該使用@autowired + @qualifier或者重新繼承bean的型別。

(1)@autowiredv+ @qualifier

public class onekafkaconfig 

@bean

public consume***ctory oneconsume***ctory(@autowired @qualifier("onekafkaproperties") kafkaproperties onekafkaproperties)

@configurationproperties(prefix = "sys.kafka.one")

@bean

public kafkaproperties onekafkaproperties()

}

public class twokafkaconfig 

@primary

@bean

public consume***ctory twoconsume***ctory(@autowired @qualifier("twokafkaproperties") kafkaproperties twokafkaproperties)

@primary

@configurationproperties(prefix = "sys.kafka.two")

@bean

public kafkaproperties twokafkaproperties()

}

(2)重新繼承bean的型別

public class onekafkaconfig 

@bean

public oneconsume***ctory oneconsume***ctory(@autowired onekafkaproperties onekafkaproperties)

@configurationproperties(prefix = "sys.kafka.one")

@bean

public onekafkaproperties onekafkaproperties()

public class twokafkaconfig 

@primary

@bean

public twoconsume***ctory twoconsume***ctory(@autowired twokafkaproperties twokafkaproperties)

@primary

@configurationproperties(prefix = "sys.kafka.two")

@bean

public twokafkaproperties twokafkaproperties()

}

spring的依賴注入的注入方式

一 構造器注入 1 常量值 簡寫 全寫 常量 2 引用 簡寫 全寫 二 setter注入 1 常量值 簡寫 全寫 常量 2 引用 簡寫 全寫 3 陣列 沒有簡寫形式 4 列表 沒有簡寫形式 5 集合 沒有簡寫形式 6 字典 簡寫 全寫 鍵常量 值常量 7 properties 沒有簡寫形式 三 其他...

SQL注入中的union注入

環境自己搭的 union聯合,合併,將多條查詢語句結果合併成乙個結果,union注入攻擊是手工測試 1.首先要判斷是否存在注入點 2.通過order by 1 99 查詢字段 首先應該用查詢出欄位 1.注 20表示空格,我這裡從1試到了7 到7的時候報錯,也就會是說有6個字段 2.我的回顯是2和4,...

SQL注入之提交方式的注入

1 get get是從伺服器上獲取資料,不和伺服器產生互動 get注入 平時訪問網頁測試注入點,對它進行注入就是get注入方式。2 post post是向伺服器傳送資料。post提交方式主要適用於表單的提交 post注入 主要用於登入框的注入。3 cookie cookie提交用於賬號密碼的cook...