在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来编码接口类型?
答案 0 :(得分:0)
在带注释的控制器中,返回Vehicle
而不是Spring Docs中所述的Mono<Vehicle>
就足够了。
注意:您可以在使用Mono<T>
或Flux<T>
时使用显式处理函数,因为处理反应式类型时处理函数更加显式。但是,它们使用起来比较冗长。