java.lang.IllegalArgumentException:视图解析不支持多值反应类型:reactor.core.publisher.Flux<MyPojo>

java.lang.IllegalArgumentException: Multi-value reactive types not supported in view resolution: reactor.core.publisher.Flux<MyPojo>

关于Java + SpringBoot Webflux 的小问题。

我有一个小型处理程序返回 Flux<MyPojo>

如果我这样构建控制器(请注意 @RestController):

@RestController
public class MyController {

    @PostMapping(path = "/getFluxMyPojo", produces = MediaType.APPLICATION_JSON_VALUE)
    public Flux<MyPojo> getFluxMyPojo() {
        return myPojoService.thisWillGetFluxMyPojo();
    }

}

一切顺利,很高兴,我确实得到了通量。

我很难理解的是,如果我将@RestController更改为@Controller,如下所示:

@Controller
public class MyController {

    @PostMapping(path = "/getFluxMyPojo", produces = MediaType.APPLICATION_JSON_VALUE)
    public Flux<MyPojo> getFluxMyPojo() {
        return myPojoService.thisWillGetFluxMyPojo();
    }

}

然后,我总是得到这个异常。

java.lang.IllegalArgumentException: Multi-value reactive types not supported in view resolution: reactor.core.publisher.Flux<MyPojo>
    at org.springframework.web.reactive.result.view.ViewResolutionResultHandler.handleResult(ViewResolutionResultHandler.java:181) ~[spring-webflux-5.3.15.jar:5.3.15]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

这只是供其他网络服务使用的网络服务,没有视图或任何东西。 请问这是什么问题,为什么我会收到此异常?

谢谢

正如 Boris 提到的,如果没有 @RestController,它需要 @ResponseBody 注释来告诉 Spring 不需要视图分辨率。