如何解决 'com.example.test.repository.ConfigRepository' 类型的合格 bean 不可用:预计至少有 1 个符合自动装配条件的 bean

how to solve No qualifying bean of type 'com.example.test.repository.ConfigRepository' available: expected at least 1 bean which qualifies autowire

以下是我的目录结构

  1. com.example
  2. com.example.common
  3. com.example.测试
  4. com.example.test.repository

我的主 spring boot class 如下

package com.example.test;

@Import({ AutoConfig.class })
@SpringBootApplication
public class testApplication {
  public static void main(String[] args) {
    SpringApplication.run(testApplication.class, args);
  }
}

我的存储库类

package com.example.test.repository.ConfigRepository;

 @Repository
 public interface ConfigRepository extends MongoRepository<Config, String>, QuerydslPredicateExecutor<Config> {

}

这是我在调试模式下遇到的错误

DEBUG o.s.c.a.ClassPathBeanDefinitionScanner - 被忽略,因为不是具体的顶层 class:文件 [/opt///target/classes/com/example/test/repository/ConfigRepository.class]

AutoConfig class 用于@import 如下

package com.example.common;

@Configuration
@EnableFeignClients
@ComponentScan({ "com.example.common" })
public class AutoConfig {

你的ConfigRepositoryclass在com.example.test.repository这个包里

并且在提供 @ComponentScan 时,您正在通过此路径 com.example.common.

因此,您只是尝试使用下面的 com.example.test 路径。

并且在您的 SpringBootApplication 文件或 Config 文件中,您可以提供 EnableMongoRepositories 并设置 basePackages 属性。

package com.example.test;

@Import({ AutoConfig.class })
@EnableMongoRepositories(basePackages = {"com.example.test.repository"})
@SpringBootApplication
public class testApplication {
  public static void main(String[] args) {
    SpringApplication.run(testApplication.class, args);
  }
}

@Configuration
@EnableFeignClients
@ComponentScan({ "com.example.test" })
public class AutoConfig {

有关 @EnableMongoRepositories 的更多信息,您将从 here 中获得灵感。 这对你有帮助。