Spring Cloud 流无法自动装配 Source.class
Posted
技术标签:
【中文标题】Spring Cloud 流无法自动装配 Source.class【英文标题】:Spring cloud streams could not autowire Source.class 【发布时间】:2019-04-29 01:41:16 【问题描述】:我正在从头开始学习 Spring Cloud Streams。
我试图创建一个这样的源应用程序:
import org.springframework.cloud.stream.messaging.Source; //etc
@RestController
@SpringBootApplication
@CrossOrigin
@EnableBinding(Source.class)
public class StreamsProducerApplication
@Autowired
Source source;
@GetMapping(value="/send/message")
public void sendMessage(@PathVariable String message)
if(message != null)
source.output().send(MessageBuilder.withPayload(message).build());
public static void main(String[] args)
SpringApplication.run(StreamsProducerApplication.class, args);
但是,我从 Intellij IDEA 在“Source source;”处收到错误提示。说“无法自动装配。找不到‘源’类型的 bean。
我可以理解Source是我导入的接口,但是spring官网说“Spring Cloud Stream为你创建了接口的实现。你可以通过自动装配在应用程序中使用它”https://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/
那么我是怎么做错的呢?谢谢。
【问题讨论】:
您是否尝试运行您的应用程序? 只是IDE误报 我也有同样的问题。 Source 类在运行时没有自动装配,这会导致错误 【参考方案1】:只是 Intellij IDEA 不知道 @EnableBinding(Source.class)
在运行时将成为一个 bean。只有这样一个 bean 定义,所以工具无法确定在 @Autowired
中注入什么。
否则,您的代码非常好,您只需要运行它并使用您对代码的期望即可。
【讨论】:
我有同样的问题,我尝试运行应用程序(我使用基于构造函数的注入),但在运行时出现错误。这种情况该怎么办?Parameter 0 of constructor in __ required a bean of type 'org.springframework.cloud.stream.messaging.Source' that could not be found. Action: Consider defining a bean of type 'org.springframework.cloud.stream.messaging.Source' in your configuration.
您评论的问题有点过时了。考虑提出一个具有更多相关上下文的新 SO 线程。【参考方案2】:
这只是一个 IDE 错误警报。 您可以通过添加
在 IDE 中抑制此错误@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
【讨论】:
以上是关于Spring Cloud 流无法自动装配 Source.class的主要内容,如果未能解决你的问题,请参考以下文章
Spring cloud sleuth 注解:自动装配不起作用
Thymeleaf-Spring4 无法自动装配 TemplateEngine