Потоки Spring Cloud не могут автоматически подключать Source.class

Я изучаю 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/

Так как я сделал это неправильно? Спасибо.

вы пробовали запустить свое приложение?

stacker 27.11.2018 11:58

это просто ложная тревога IDE

Ziyan Li 28.11.2018 08:58

У меня такая же проблема. Класс Source не подключается автоматически во время выполнения, и это приводит к ошибке

java_geek 04.04.2020 04:36
2
3
1 117
2

Ответы 2

Просто Intellij IDEA не знает, что @EnableBinding(Source.class) будет bean-компонентом во время выполнения. Есть только такое определение bean-компонента, поэтому инструментам не удается определить, что вводить в этот @Autowired.

В противном случае ваш код полностью исправен, и вам просто нужно запустить его и поиграть со всем, что вы ожидаете от этого кода.

У меня такая же проблема, я попытался запустить приложение (я использую инъекцию на основе конструктора), и у меня возникла ошибка во время выполнения. Что делать в этом случае?

improbable 16.01.2020 16:34
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.
improbable 16.01.2020 16:34

Вопрос, который вы комментируете, немного устарел. Рассмотрите возможность создания нового потока SO с более релевантным контекстом.

Artem Bilan 16.01.2020 19:05

Это просто ложное предупреждение IDE. Вы можете подавить эту ошибку в IDE, добавив

@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") 

Другие вопросы по теме

Интеграция Spring Data DynamoDb с Spring Boot (java.lang.AbstractMethodError: createPersistentProperty)
Передача часового пояса браузера во внутреннее приложение Springboot для создания отчетов с датами в соответствии с часовым поясом браузера
Перенаправление на защищенную страницу не происходит после входа в систему с помощью Spring Security oAuth + Spring Boot
Вызов MyBatis запроса как часть настраиваемой DefaultShutdownStrategy в Apache Camel
Невозможно получить доступ к конечной точке REST в контейнере докеров из другого контейнера докеров
Как настроить роль администратора, которая может получить доступ ко всем URL-адресам в весенней безопасности
Прокси-сервер webpack dev имеет ошибку: HPE_INVALID_CHUNK_SIZE
Интеграция Spring http-входящий-шлюз / RequestMappingHandlerMapping
Запрос относительного времени, который будет работать как для H2, так и для MySQL
Публикация результатов проверки в пакт-брокере не работает в pact-jvm-provider-spring_2.12