В чем разница между конечной точкой getPerson в PersonController и PersonController1 в приведенном ниже коде?
В этом конкретном случае, каковы преимущества использования CompletableFuture?
@RestController
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping("/persons/{personId}" )
public CompletableFuture<Person> getPerson(@PathVariable("personId") Integer personId) {
return CompletableFuture.supplyAsync(() -> personService.getPerson(personId));
}
}
@RestController
public class PersonController1 {
@Autowired
private PersonService personService;
@GetMapping("/persons/{personId}" )
public Person getPerson(@PathVariable("personId") Integer personId) {
return personService.getPerson(personId);
}
}
@Service
public class PersonService {
@Autowired
PersonRepository personRepository;
@Transactional
public Person getPerson(int personId) {
return personRepository.getPerson(personId);//this will get the data from the DB
}
}