所以如果你有一个测试类
class FooControllerIT{
@Autowired FooController controller;
}
并且您向该类添加一个 @SpringBootTest
注释,IntelliJ 声称
Could not autowire. No beans of 'FooController' type found.
这是一个谎言,因为测试运行并通过得很好。
如果我用 @Component
注释替换 @SpringBootTest
注释,“错误”就会消失(当我替换 @SpringBootTest
注释再次返回)。
什么原因导致这种行为?
(我使用的是旗舰版 2019.1,使用 Spring Boot 2.1.8-RELEASE)
最佳答案
找不到您的 Controller 的可能原因是它与注释为 @SpringBootApplication
的主应用程序类不在同一(或更高)包中。如果不想移动Controller,可以新建一个配置类,注释为@ComponentScan
@Configuration
@ComponentScan(basePackages = "com.your.controller.package")
public class FooConfig {
}
即使您可以手动将此配置添加到测试 spring 上下文中:@SpringBootTest(classes = FooConfig.class)
关于java - 添加 `@SpringBootTest` 注释会触发 IntelliJ 误报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58833053/