spring 如何修复“无法自动连接,未找到'MyRepository'类型的bean”?

nvbavucw  于 2022-12-17  发布在  Spring
关注(0)|答案(4)|浏览(186)

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

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

这是MyRepository接口:

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

这是MyRepositoryTest测试类:

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

测试类中的自动连接myRepository示例出现错误。它显示为Could not autowire. No beans of 'MyRepository' type found。我搜索了一下并尝试添加@Component@Repository等,但没有任何帮助。如何修复此问题?

mwg9r5ms

mwg9r5ms1#

你可以尝试一下,把你的包设置在类AppConfig@ComponentScan中:

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

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

sh7euo9m2#

在主类的@SpringBootApplication下是否有@EnableAutoConfiguration?请尝试设置它。

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

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

}
iyfamqjs

iyfamqjs3#

框架似乎未扫描应用程序中包含测试类的包
从上面共享的层次结构来看,MyRepository接口的包是“rest.repository”,MyRepositoryTest类的包是“rest”。
尝试将MyRepositoryTest类的包也更改为“rest.repository”。这应该可以解决问题。

dwbf0jvd

dwbf0jvd4#

您可以尝试指定应包含在组件扫描中的基本软件包。例如:

@SpringBootApplication(scanBasePackages = {"com.example.demo", "com.example.model"})

注解指出组件扫描应该包括com.example.demo和com.example.model包,这意味着Spring将在这些包中搜索并注册任何Spring管理的组件(如@Controller、@Service和@Repository bean),并使它们可用于依赖注入。

相关问题