在webflux中,当控制器的返回类型为Interface Mono时,返回值不会将返回值转换为json

时间:2019-04-16 02:30:59

标签: java spring spring-webflux

在Spring MVC框架中,当控制器返回接口类型时,spring的消息转换器可以将返回值转换为适当的消息(例如JSON)。

例如,当我调用“车辆” api时会收到JSON消息。

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

    public interface Vehicle {

    }

    public class Car implements Vehicle {
        private String gearType;
    }

但是,Webflux的行为不同。当返回类型是接口的单声道时,它仅支持“内容类型:文本/事件流”。

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

在我看来,Webflux的行为令人不舒服。是虫子吗? 我是否需要添加自定义MessageWriter来编码接口类型?

1 个答案:

答案 0 :(得分:0)

在带注释的控制器中,返回Vehicle而不是Spring Docs中所述的Mono<Vehicle>就足够了。

注意:您可以在使用Mono<T>Flux<T>时使用显式处理函数,因为处理反应式类型时处理函数更加显式。但是,它们使用起来比较冗长。

相关问题