下面的代码是在使用JDK 1.8和Spring 5构建的Java应用程序中使用Lambda的命令式编程风格和函数式编程风格的混合。
公共Mono updateEmpDetails(字符串compId,字符串userId,
字符串城市){
logger.info("Entering updateEmpDetails@EmployeeService");
final UserKey userKey = getCommerceObj(compId, userId);
Optional <Employee> emp = EmployeeRepository.findById(userKey);
if (emp.isPresent()) {
Employee empObj = emp.get();
empObj.setCity(city);
final Mono<Employee> Employee = asyncRunner
.one(() -> EmployeeRepository.saveAndFlush(empObj))
.doOnNext(value -> new CommonService().refreshMap())
.doOnError(error -> logger.error("Error while persisting Emp User Object: ", error))
.map(EmployeeObj -> EmployeeObj);
logger.info("Exiting updateEmpDetails@EmployeeService");
return Employee;
}else{
return null;
}
}
我把
如果
使用isPresent()确保可选Employee对象不为空的条件。
我想删除它
返回空
从else条件中检查,这样每当有空Mono的Employee就返回空Mono。我对lambda和函数式编程很陌生。请让我知道如何重新编写这个逻辑,并请让我明白,以便我可以在未来自己做。谢谢