日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring注释,我从来没有机会使用第1部分:@primary

發布時間:2023/12/3 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring注释,我从来没有机会使用第1部分:@primary 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天,我想起了我的一個老朋友(@primary),我們從教程到教程都遇到了他。 您知道在Spring @Autowired批注中按類型工作,也就是說,如果Spring找到符合類型的匹配的合格bean,則會將其注入。讓我們在示例中進行查看。

假設我有兩個歌手班; OperaSinger和MetalSinger。

@Component public class MetalSinger implements Singer{@Overridepublic String sing(String lyrics) {return "I am singing with DIO voice: "+lyrics;} }public class OperaSinger implements Singer {@Overridepublic String sing(String lyrics) {return "I am singing in Bocelli voice: "+lyrics;} }

它們都實現了Singer接口。

public interface Singer {String sing(String lyrics); }

并定義一個SingerService并將Singer bean注入其中。

@Component public class SingerService {private static final Logger logger = LoggerFactory.getLogger(SingerService.class);@Autowiredprivate Singer singer;public String sing(){return singer.sing("song lyrics");} }

你怎么看; 哪個歌手會被注入里面? 結果如下:

我用DIO聲音唱歌:歌詞。

這是因為OperaSinger并未定義為Component或Service,因此Spring沒有任何線索。 如果我們向其添加@Component注釋:

@Component public class OperaSinger implements Singer {@Overridepublic String sing(String lyrics) {return "I am singing in Bocelli voice: "+lyrics;} }

比我將得到此異常:

org.springframework.beans.factory.NoUniqueBeanDefinitionException:沒有定義類型為[main.service.Singer]的合??格bean:期望的單個匹配bean,但找到2:metalSinger,operaSinger

原因很明顯。 如果我有多個具有相同類型的bean,并且使用綁定類型的@Autowired注釋,則將出現此異常。 Spring并不知道應該使用哪個Singer。

讓我們喜歡一種音樂類型,并告訴Spring使用OperaSinger作為Primary。

@Primary @Component public class OperaSinger implements Singer{@Overridepublic String sing(String lyrics) {return "I am singing in Bocelli voice: "+lyrics;} }

如果我們進行SingerService調用,則會得到:

"I am singing in Bocelli voice: song lyrics"

那是因為我們選擇OperaSinger作為主要對象,這意味著“如果您對類型感到困惑,最好使用此類型”。 另一種方法是使用限定符名稱,將名稱直接映射到bean。

翻譯自: https://www.javacodegeeks.com/2015/04/spring-annotations-i-never-had-the-chance-to-use-part-1-primary.html

總結

以上是生活随笔為你收集整理的Spring注释,我从来没有机会使用第1部分:@primary的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。