Я изучаю 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 - это интерфейс, из которого я импортирую, но на официальном веб-сайте Spring говорится: «Spring Cloud Stream создает для вас реализацию интерфейса. Вы можете использовать это в приложении, автоматически подключив его» https://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/
Так как я сделал это неправильно? Спасибо.
это просто ложная тревога IDE
У меня такая же проблема. Класс Source не подключается автоматически во время выполнения, и это приводит к ошибке
Просто 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 с более релевантным контекстом.
Это просто ложное предупреждение IDE. Вы можете подавить эту ошибку в IDE, добавив
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
вы пробовали запустить свое приложение?