簡體   English   中英

Spring-Boot創建名稱不完整的bean將導致“ NoSuchBeanDefinitionException,找不到依賴類型為[]的合格bean”

[英]Spring-Boot create bean with out name will cause “NoSuchBeanDefinitionException, No qualifying bean of type[]found for dependency ”

我通過配置用名字創建bean

@Configuration
@ConfigurationProperties(prefix = "mysql")
public class DbConfiguration extends BaseDbConfiguration {

  @Bean//(name = "fix")
  @Override
  public DbClient createClient() {
      return super.createClient();
  }

}

用法:

@Autowired
private DbClient dbClient;

當我運行應用程序時無法啟動

並拋出NoSuchBeanDefinitionException:

找不到依賴項的類型為[DbClient]的合格Bean:至少應有1個符合此依賴項的自動裝配候選條件的bean。 依賴項注釋:{@ org.springframework.beans.factory.annotation.Autowired(required = true)}

但是我通過添加名稱來解決它,為什么?

@Bean(name = "fix")

我還添加了這樣的測試:

public class TestCreate {

    @NotNull
    private int test;

    public Test createTest() {
        return new Test(this.test);
    }

}

它的配置是這樣的:

@Configuration
@ConfigurationProperties(prefix = "test")
public class TestConfiguration extends TestCreate {

    @Override
    @Bean
    public Test createTest() {
        return super.createTest();
    }

}

並像這樣自動布線:

@Autowired
private Test test;

但是,此測試可能效果很好

它還會創建沒有名稱的Bean,並在沒有限定符的情況下自動裝配

請告訴我為什么...。謝謝

抱歉。

我發現了結果:

覆蓋bean'createClient'的bean定義:替換...

因此,Spring-Boot將通過FunctionName創建Bean,而不是返回ObjectName。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM