org.springframework.cloud.stream.messaging.Source не может быть подключен автоматически - PullRequest
0 голосов
/ 17 января 2020

Я играл в Spring Cloud Streams и столкнулся с этой проблемой. Мой вопрос очень похож на этот , суть здесь:

Я получаю подсказку об ошибке от Intellij IDEA на "Source source;" говоря: «Не удалось автоматически подключить. Не найдены bean-компоненты типа« Источник ».

Ниже приведены обновленные документы :

Помимо генерируя каналы для каждой привязки и регистрируя их как бины Spring, для каждого связанного интерфейса Spring Cloud Stream генерирует бин, реализующий интерфейс.

Но есть небольшая, но важная разница, я не могу фактически запустить этот код, и он не запускается при запуске со следующей ошибкой в ​​журналах (я использую инъекцию на основе конструктора, но ошибка не исчезает go, даже если я изменяю тип инъекции, а также подсказку об ошибках IntelliJ);

Description:

Parameter 0 of constructor in ____(my class) 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.

Мой основной класс в root проекта:

@SpringBootApplication
@EnableBinding(Processor.class)
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }

}

Мой сервис, в котором я пробую автоматическое подключение исходного компонента: enter image description here

Родительские зависимости:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
</parent>

<properties>
    <java.version>1.8</java.version>
    <project.version>1.0-SNAPSHOT</project.version>
    <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    <spring-cloud-stream.version>Horsham.SR1</spring-cloud-stream.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-dependencies</artifactId>
            <version>${spring-cloud-stream.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Зависимости:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-stream-binder-rabbit</artifactId>
        </dependency>
</dependencies>

Почему это происходит и как это исправить?

1 Ответ

1 голос
/ 17 января 2020

Проблема в том, что вы пытаетесь внедрить Source.class при включении привязки для Processor.class. Вам необходимо изменить @EnableBinding(Processor.class) на @EnableBinding(Source.class)

В sidenote, поскольку вы только начинаете с spring-cloud-stream, также можно начинать с текущей последней версии, которая является Horsham.SR1 (3.0.1.RELEASE) и является частью поезда весеннего облака Hoxton.SR1. Но главное в том, что мы отходим от конфигурации на основе аннотаций, и хотя то, что вы пытаетесь выполнить, sh кажется простой проблемой неправильной конфигурации, которую мы можем помочь вам исправить, почему бы не перейти на гораздо более простая функциональная модель. Так как вы имеете дело с источником на данный момент , здесь есть соответствующий раздел .

...