Возвращаемое значение не преобразует возвращаемое значение в json, когда типом возврата контроллера является Mono of Interface, в webflux - PullRequest
0 голосов
/ 16 апреля 2019

В среде Spring MVC, когда контроллер возвращает тип интерфейса, конвертер сообщений Spring может преобразовать возвращаемое значение в правильное сообщение (например, JSON).

Например, я могу получить сообщение JSON, когда яназывается «транспортное средство» API.

    @GetMapping("vehicle")
    public Vehicle getVehicle() {
        return new Car();
    }

    public interface Vehicle {

    }

    public class Car implements Vehicle {
        private String gearType;
    }

Но поведение Webflux отличается.Он поддерживает «content-type: text / event-stream» только тогда, когда возвращаемый тип является моно интерфейса.

    @GetMapping("vehicle")
    public Mono<Vehicle> getVehicle() {
        return Mono.just(new Car());
    }

На мой взгляд, поведение Webflux неудобно.Это ошибка?Нужно ли добавлять собственный MessageWriter для кодирования типа интерфейса?

1 Ответ

0 голосов
/ 22 апреля 2019

В аннотированных контроллерах достаточно вернуть Vehicle, а не Mono<Vehicle>, как описано в Spring Docs .

Примечание: Вы можете использовать явные функции-обработчики при работе с Mono<T> или Flux<T>, поскольку функции-обработчики являются более явными при работе с реактивными типами. Тем не менее, они более многословны в использовании.

...