亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring:如果可用,使用 @Qualifier() 限定的 bean,否則使用任何

Spring:如果可用,使用 @Qualifier() 限定的 bean,否則使用任何

神不在的星期二 2021-08-25 10:03:04
我正在嘗試創建一個組件,該組件將接受特定的 bean ( fasterxml ObjectMapper)。如果有一個名為 的合格 bean qualifiedObjectMapper,我想使用該 bean。如果沒有具有該名稱的 bean,但有一個ObjectMapperbean,我想使用它。據我所知,如果我這樣做:class MyClass(  @Qualified("qualifiedObjectMapper") objectMapper: ObjectMapper)它只有在有一個具有該名稱的 bean 時才有效,但ObjectMapper如果沒有,則不會使用另一個bean(如果有多個,請使用主要的)。有沒有辦法使用合格的(如果存在),否則使用主要的?
查看完整描述

2 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

為此,您可以使用@Configurationclass,您可以在其中創建另一個基于主要和可選 bean 的合格 bean:


@Configuration

class Config {

    @Primary @Bean

    ObjectMapper primary() {...}


    @Bean

    ObjectMapper qualified(){...}


    @Bean

    ObjectMapper resulted(ObjectMapper primary, 

                         @Autowired(required = false)  @Qualifier("qualified") ObjectMapper qualified){

       return qualified == null ? primary : qualified;

    }

}

并將結果 bean 用作:


@Service

class MyService {

    MyService(@Qualifier("resulted") ObjectMapper mapper) {...}

}


查看完整回答
反對 回復 2021-08-25
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

嘗試這個


    @Autowired

private ApplicationContext applicationContext;


@Autowired

private ObjectMapper objectMapper;

然后


    try {

    ObjectMapper obj = applicationContext.getBean("qualifiedObjectMapper");

    //use qualifier

}catch(Exception e) {

    //use objectMapper

}


查看完整回答
反對 回復 2021-08-25
  • 2 回答
  • 0 關注
  • 350 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號