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
,這是可能的,還是我完全在錯誤的軌道上?