我已经创建了一个简单的单元测试,但是IntelliJ错误地将它突出显示为红色。将其标记为错误

没有豆子?

如你所见,它通过了测试?所以它一定是自动连接的?


当前回答

I had similar issue in Spring Boot application. The application utilizes Feign (HTTP client synthetizing requests from annotated interfaces). Having interface SomeClient annotated with @FeignClient, Feign generates runtime proxy class implementing this interface. When some Spring component tries to autowire bean of type SomeClient, Idea complains no bean of type SomeClient found since no real class actually exists in project and Idea is not taught to understand @FeignClient annotation in any way.

解决方案:用@Component注解接口SomeClient。(在我们的例子中,我们没有直接在SomeClient上使用@FeignClient注释,而是使用metaannotation @OurProjectFeignClient,它是带注释的@FeignClient,并向其添加@Component注释也可以工作。)

其他回答

检查您是否在服务类中遗漏了@Service注释,我就是这种情况。

我在申请的时候也遇到过类似的问题。 当我添加注释时,不正确的高亮显示消失了。

@ContextConfiguration(classes = {...})

最后一个重要的信息——添加ComponentScan,这样应用程序就知道它需要连接的东西。这与这个问题无关。但是,如果根本没有执行@autowiring,那么这可能是您的解决方案。

@Configuration
@ComponentScan(basePackages = {
    "some_package",
})
public class someService {

在最新的IntelliJ中,这似乎仍然是一个bug,与可能的缓存问题有关?

如果您将@Repository注释添加为上面提到的mk321,保存,然后删除注释并再次保存,这将解决问题。

如果你不想对你的代码做任何改变,只是为了让你的IDE满意。我通过将所有组件添加到Spring facet解决了这个问题。

创建一个名为“服务,处理器和路由器”的组或任何你喜欢的名称; 删除并重新创建“Spring Application Context”,使用之前创建的组作为父组。