3
我正在试图理解反应堆和重构返回了Optional<CompanyDetails>
使用反应堆的Mono<CompanyDetails>
而不是服务方法消耗单
public Mono<CompanyDetails> findOne(String id) {
CompanyDetails result = retrieveFromSomewhere(id);
return Mono.justOrEmpty(result);
}
从我的理解这应该发出要么empty()
或just(result)
。 我使用该服务在Spring的网络控制器这样的:
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public DeferredResult<CompanyDetails> getCompany(@PathVariable String id) {
final DeferredResult<CompanyDetails> result = new DeferredResult<>();
companyService.findOne(id)
.consume(result::setResult);
return result;
}
如果结果发现这工作得很好,但如果findOne
发出empty()
它运行到超时。我可以明确地打电话get()
,并检查null
,但感觉完全错误。
另外:在重构之前,如果找不到结果,getCompany
会抛出NotFoundException
,这是可能的,还是我完全在错误的轨道上?