#java #spring #spring-boot #redis #spring-webflux
#java #spring #весенняя загрузка #redis #spring-webflux
Вопрос:
Я должен преобразовать следующий код в неблокирующий (асинхронный) процесс.
Класс EmpController
@RestController
@RequestMapping("/emp")
public class EmpController {
private EmployeeRepository empRepo;
@Autowired
public EmpController(EmployeeRepository empRepo)
{
this.empRepo=empRepo;
}
@PostMapping("/save/all")
@Consumes({MediaType.APPLICATION_JSON})
public void saveEmpAll(@RequestBody List<Employee> emps)
{
empRepo.saveEmpAll(emps);
}
}
Класс EmployeeRepository
@Repository
public class EmployeeRepository implements EmployeeDAO {
@Override
public void saveEmpAll(List<Employee> emps) {
Map<Long,Employee> employees=new HashMap<>();
emps.forEach(emp->{
emp.setDate(new Date());
employees.put(emp.getId(),emp);
});
hashOperations.putAll("EMP",employees);
}
}
Используйте реактивное программирование с Spring Webflux
контроллер
@PostMapping("/save/all")
@Consumes({MediaType.APPLICATION_JSON})
public void saveEmpAll(@RequestBody Flux<Employee> emps)
{
emps.collectMap(e->{
e.setDate(new Date());
// todo.............( can I do like this? is it the right way?)
});
}
ropository
@Override
public void saveEmpAll(Map<Long,Employee> employees) {
hashOperations.putAll("EMP",employees);
}
есть ли какой-либо другой способ создать HashMap и поместить в него значения асинхронным способом с помощью Flux?
Комментарии:
1.
Map<Long, Employee> employees = employeeList.stream().collect(Collectors.toMap(employee -> employee.getId(), employee -> employee));
Вы также можете попробовать подобное.