Мне нужно переписать некоторый код пружины для реактивной пружины.Таким образом, существует служба репозитория с реактивной пружиной, которая предоставляет тип объекта.Но возвращаемый тип метода отображения является еще одним типом, который зависит от локали.Теперь есть блокирующий алгоритм, который вызывает метод get из репозитория, затем разделяет результат, затем берет строковую локаль и затем создает из них один объект ответа.Как я могу объединить это в одну неблокирующую цепочку реактивных методов?Я вижу, что единственное, что мне нужно ждать, это служба 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
)
);
}