Spring boot 1.5.6中的RxJava 2

Spring boot 1.5.6中的RxJava 2,java,spring,rx-java,Java,Spring,Rx Java,我有一个restController,它返回单个对象 @ApiOperation(value=“创建新用户”) 公共单个saveNewUser(@RequestBody UserRequest UserRequest){ 返回userService.saveUser(userRequest) .map(e->{ CreatedUserResponse响应=新建CreatedUserResponse(e.getUserId()); Link=linkTo(methodOn(UserControll

我有一个restController,它返回单个对象

@ApiOperation(value=“创建新用户”)
公共单个saveNewUser(@RequestBody UserRequest UserRequest){
返回userService.saveUser(userRequest)
.map(e->{
CreatedUserResponse响应=新建CreatedUserResponse(e.getUserId());
Link=linkTo(methodOn(UserController.class)
.getUserById(例如getUserId(),userRequest.getUserId())
.with selfrel();
答复.添加(链接);
返回响应;
});
}
我犯了以下错误

java.lang.IllegalArgumentException:未找到类型为class io.reactivex.internal.operators.single.SingleMap的返回值的转换器 在org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.WriteWithMessageConverterMethodProcessor(AbstractMessageConverterMethodProcessor.java:187)~[spring-webmvc-4.3.10.RELEASE.jar:4.3.10.RELEASE]


我从Single更改为CreatedUserResponse,一切正常,所以当我从被动类型更改为normal时,它工作正常,但如果我想返回被动类型,我必须做什么?有什么解决方案吗?

Spring Boot 2.0支持RxJava 2

文件:

此回购在返回rx java 2类型中具有包装器:

您还可以转换为延迟或未来类型,并按照此处的建议返回:


Spring Boot 2.0支持RxJava 2

文件:

此回购在返回rx java 2类型中具有包装器:

您还可以转换为延迟或未来类型,并按照此处的建议返回:


我知道spring boot 1支持rxjava 1,但我曾经找到了解决方案并起诉了rxjava 2。我正在寻找将rxjava 2与spring boot 1结合使用的解决方案。您应该将CreatedUserResponse作为处理程序方法的一部分返回,以便spring HttpMessageConverters将其转换为适当的响应(因为spring boot 1不知道如何转换rxjava类型)或者您可以定义自己的HttpMessageConverter并在那里进行处理。您可以查看这些用于连接自定义HttpMessageConverter的教程:1)2)。我知道spring boot 1支持rxjava 1,但我曾经找到了处理它并起诉rxjava 2的解决方案。我正在寻找将rxjava 2与spring boot 1结合使用的解决方案。您应该将CreatedUserResponse作为处理程序方法的一部分返回,以便spring HttpMessageConverters将其转换为适当的响应(因为spring boot 1不知道如何转换rxjava类型)或者您可以定义自己的HttpMessageConverter并在那里处理它。您可以查看这些用于连接自定义HttpMessageConverter的教程:1)2)。
@ApiOperation(value="Create new user")
public Single<CreatedUserResponse> saveNewUser(@RequestBody UserRequest userRequest) {
    return userService.saveUser(userRequest)
            .map(e -> {
                CreatedUserResponse response = new CreatedUserResponse(e.getUserId());
                Link link=linkTo(methodOn(UserController.class)
                .getUserById(e.getUserId(),userRequest.getUserId()))
                        .withSelfRel();
                response.add(link);
                return response;
            });
}