如何在不阻塞的情况下将一个对象转换为另一个对象

时间:2019-06-10 11:45:53

标签: java reactive-programming spring-webflux project-reactor

我需要将一些spring代码重写为reactive-spring。因此,有一个提供对象类型的反应性弹簧恢复服务。但是映射方法的返回类型是另一种类型,它取决于语言环境。现在有一个阻塞的alogorithm方法,它从存储库中调用get方法,然后拆分结果,然后采用String语言环境,然后从中获取所有一个响应对象。如何将其组合成反应性方法的一个非阻塞链? 我看到我唯一需要等待的就是Mongo Db服务,这是一种反应,但是我想适当地编写代码以使Spring框架阻止Mono本身。这是示例代码:

@RestController
@RequestMapping
public class PhoneCheckController {

    @Autowired
    private MessageLocalization loc;

    @Autowired
    private PhoneCheckService service;

    @GetMapping("/check")
    public PhoneCheckResponse checkPhone(@Valid @ModelAttribute PhoneCheckRequest request, Locale locale) {
        PhoneCheckResult result = service.checkPhoneNumber(DtoTransformer.toParams(request)).block();
        return new PhoneCheckResponse(
                result.getViolationLevel(),
                loc.getMessage(result.getMessage(), locale)
        );
    }
}

我试图做到这样

public Mono<PhoneCheckResponse> checkPhone(@Valid @ModelAttribute PhoneCheckRequest request, Locale locale) {
        PhoneCheckResult result = service.checkPhoneNumber(DtoTransformer.toParams(request));
        return Mono.just(new PhoneCheckResponse(
                result.getViolationLevel(), //reactive part I need put
                loc.getMessage(result.getMessage(), locale) //reactive part 
            )
        );
    }

0 个答案:

没有答案