关于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:
这只是一个供其他web服务使用的web服务,没有视图或任何内容。我可以问一下是什么问题吗?为什么我会得到这个例外?
谢谢
根据Boris所述,如果没有@RestController,则需要@ResponseBody注释来告诉不需要Spring视图解析。