Как добавить @RestController в приложения spring-webflux?

Аннотация @RestController не может быть разрешена только при добавлении spring-boot-starter-webflux в качестве зависимости от maven:

@RestController
public class MyController {

}

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.6</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
</dependencies>

Чего здесь не хватает? Согласно многим ресурсам (например, https://medium.com/javarevisited/basic-introduction-to-spring-webflux-eb155f501b17), зависимости webflux должно быть достаточно для веб-сервиса webflux в spring-boot.

это может быть просто поврежденная загрузка, mvn dependency:purge-local-repository очистит локальное репо от зависимостей проекта и, при необходимости, потребует их

Darren Forsythe 06.04.2022 13:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Аннотация RestController является частью зависимости org.springframework:spring-web:

Зависимость org.springframework:весна-сеть является частью jar org.springframework.boot: spring-boot-starter-webflux, поэтому она должна быть разрешена. Вы можете проверить полную иерархию зависимостей, выполнив команду зависимость mvn:дерево из терминала.

[INFO] +- org.springframework.boot:spring-boot-starter-webflux:jar:2.6.6:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.6.6:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:2.6.6:compile
[INFO] |  |  |  \- org.springframework:spring-context:jar:5.3.18:compile
[INFO] |  |  |     +- org.springframework:spring-aop:jar:5.3.18:compile
[INFO] |  |  |     \- org.springframework:spring-expression:jar:5.3.18:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.6.6:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.6.6:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.2.11:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.2.11:compile
[INFO] |  |  |  +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.17.2:compile
[INFO] |  |  |  |  \- org.apache.logging.log4j:log4j-api:jar:2.17.2:compile
[INFO] |  |  |  \- org.slf4j:jul-to-slf4j:jar:1.7.36:compile
[INFO] |  |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] |  |  \- org.yaml:snakeyaml:jar:1.29:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-json:jar:2.6.6:compile
[INFO] |  |  +- com.fasterxml.jackson.core:jackson-databind:jar:2.13.2.2:compile
[INFO] |  |  |  +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.2:compile
[INFO] |  |  |  \- com.fasterxml.jackson.core:jackson-core:jar:2.13.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.13.2:compile
[INFO] |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.13.2:compile
[INFO] |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.13.2:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-reactor-netty:jar:2.6.6:compile
[INFO] |  |  \- io.projectreactor.netty:reactor-netty-http:jar:1.0.17:compile
[INFO] |  |     +- io.netty:netty-codec-http:jar:4.1.75.Final:compile
[INFO] |  |     |  +- io.netty:netty-common:jar:4.1.75.Final:compile
[INFO] |  |     |  +- io.netty:netty-buffer:jar:4.1.75.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport:jar:4.1.75.Final:compile
[INFO] |  |     |  +- io.netty:netty-codec:jar:4.1.75.Final:compile
[INFO] |  |     |  \- io.netty:netty-handler:jar:4.1.75.Final:compile
[INFO] |  |     +- io.netty:netty-codec-http2:jar:4.1.75.Final:compile
[INFO] |  |     +- io.netty:netty-resolver-dns:jar:4.1.75.Final:compile
[INFO] |  |     |  +- io.netty:netty-resolver:jar:4.1.75.Final:compile
[INFO] |  |     |  \- io.netty:netty-codec-dns:jar:4.1.75.Final:compile
[INFO] |  |     +- io.netty:netty-resolver-dns-native-macos:jar:osx-x86_64:4.1.75.Final:compile
[INFO] |  |     |  \- io.netty:netty-resolver-dns-classes-macos:jar:4.1.75.Final:compile
[INFO] |  |     +- io.netty:netty-transport-native-epoll:jar:linux-x86_64:4.1.75.Final:compile
[INFO] |  |     |  +- io.netty:netty-transport-native-unix-common:jar:4.1.75.Final:compile
[INFO] |  |     |  \- io.netty:netty-transport-classes-epoll:jar:4.1.75.Final:compile
[INFO] |  |     \- io.projectreactor.netty:reactor-netty-core:jar:1.0.17:compile
[INFO] |  |        \- io.netty:netty-handler-proxy:jar:4.1.75.Final:compile
[INFO] |  |           \- io.netty:netty-codec-socks:jar:4.1.75.Final:compile
[INFO] |  +- org.springframework:spring-web:jar:5.3.18:compile
[INFO] |  |  \- org.springframework:spring-beans:jar:5.3.18:compile
[INFO] |  \- org.springframework:spring-webflux:jar:5.3.18:compile

Если вы начинаете новый проект, вы можете использовать инициализатор spring - https://start.spring.io/

ОМГ большое спасибо. С помощью :tree я мог обнаружить, что случайно снова добавил зависимость spring-boot-starter-webflux в конце pom.xml с помощью <scope>test</scope>. Удаление этого, конечно, решило это!

membersound 06.04.2022 13:15

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