Я пытаюсь адаптировать приложение, которое хорошо работает с Spring MVC, но имеет другое поведение с Spring WebFlux
Вот мой код с Spring Boot 5 - Spring MVC:
Контроллер:
@RestController
public class MyRestController {
@GetMapping("/test/{id}/{label}")
public ResponseEntity<Payload> test(@ModelAttribute Payload payload) {
return new ResponseEntity<>(payload,HttpStatus.OK);
}
}
Объект Payload:
public class Payload {
@NotNull
private int id;
private String label;
public Payload() {}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
Мой pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Я не написал никакого специального конвертера, Spring заполняет мой объект полезной нагрузки автоматически, все в порядке.
Когда я звоню:
http://localhost:8080/test/25/helloWorld
Ответ
{"id":25,"label":"helloWorld"}
Затем я меняю только свой pom.xml, переключаясь с web на webflux:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
</dependencies>
И мой полезный объект больше не заполнен.
Когда я звоню:
http://localhost:8080/test/25/helloWorld
Ответ
{"id":0,"label":null}
Я знаю, что мог бы написать конвертер и зарегистрировать его в @ControllerAdvice, но я не могу себе представить, что не существует автоматизированного решения, которое могло бы заставить его работать снова, как это всегда работало с Spring Web.
Кто-нибудь уже сталкивался с той же проблемой, что и я?
Спасибо
Julien