当前位置: 首页 > 知识库问答 >
问题:

Spring-Boot创建没有名称的bean将导致“NoSuchBean定义异常,没有找到[]类型的合格bean作为依赖项”

孔正文
2023-03-14

我通过不带out名称的配置创建bean

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

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

}

用法:

@Autowired
private DbClient dbClient;

当我运行应用程序时,它无法启动

并抛出NoSuchBean定义异常

找不到符合依赖项要求的[DbClient]类型的bean:需要至少1个符合此依赖项autowire候选的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(必需=true)}

但我通过添加名称来修复它,为什么??

@Bean(name = "fix")

我还添加了这样的测试:

public class TestCreate {

    @NotNull
    private int test;

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

}

it配置如下:

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

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

}

自动连线如下:

@Autowired
private Test test;

不过这个测试可能会很有效

它还创建不带名称的Bean,并自动连接,不带限定符

请告诉我为什么谢谢

共有1个答案

江礼骞
2023-03-14

很抱歉

我找到了结果:

正在重写bean“createClient”的bean定义:替换。。。

因此,Spring Boot将通过FunctionName而不是返回ObjectName来创建Bean。

 类似资料: