如何修复 "Could not autowire. No beans of 'MyRepository' type found"?

How do I fix "Could not autowire. No beans of 'MyRepository' type found"?

我的项目中有这个层次结构:

▼ server
  ▼ myproject
    ▼ src
      ▼ main
        ▼ java
          ▼ rest
            ▼ repository
              Ⓘ MyRepository
        ▶ resources
      ▼ test
        ▼ java
          ▼ rest
            Ⓒ MyRepositoryTest

这是 MyRepository 界面:

public interface MyRepository extends MongoRepository<String, Integer> {
}

这是 MyRepositoryTest 测试 class:

@ExtendWith(SpringExtension.class)
public class MyRepositoryTest {
    ...
    @Autowired MyRepository myRepository;
    ...
}

错误发生在测试中自动装配的 myRepository 实例上 class。它说 Could not autowire. No beans of 'MyRepository' type found。我搜索了一下并尝试添加 @Component@Repository 等等,但没有任何帮助。我该如何解决这个问题?

您可以试试这个,将您的包设置在 class 的 @ComponentScan AppConfig:

@ContextConfiguration(classes = AppConfig.class)
@ExtendWith(SpringExtension.class)
public class AdminEvaluatorTest {
    @Autowired MyRepository myRepository;

    @Configuration
    @ComponentScan("com.<your-package>")
    public static class AppConfig {
    }
}

您的@SpringBootApplication 下是否有@EnableAutoConfiguration class?尝试设置一下。

@SpringBootApplication
@EnableAutoConfiguration
....
public class MyProject{

    public static void main(String[] args) {
        SpringApplication.run(MyProject.class, args);
    }

}

看起来框架没有扫描在您的应用程序中有测试 class 的包

从上面共享的层次结构来看,MyRepository 接口的包是“rest.repository”,MyRepositoryTest 的包class 是“休息”。

尝试将 MyRepositoryTest class 的包也更改为“rest.repository”。这应该可以解决问题。