Я написал свой собственный обработчик, расширяющий ResponseEntityExceptionHandler, и я хочу реализовать его в моем контроллере отдыха, но я не могу найти пример того, как я могу это сделать:
Это мой контроллер:
@RestControllerAdvice
public class ErrorController extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(
MethodArgumentNotValidException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request) {
return new ResponseEntity<>(ex.getBindingResult().toString(), HttpStatus.BAD_REQUEST);
}
}
И это мой метод управления.Он должен вернуть пользователя по идентификатору:
@GetMapping(path = "/{id}")
public @ResponseBody ResponseEntity<?> getUserById(@PathVariable("id") String userId) {
if (!usersService.existsByUserId(Integer.valueOf(userId))) {
return new ResponseEntity<>(new CustomResponseMessage(HttpStatus.BAD_REQUEST, "UserEntity with ID=" + userId + " doesn't exist!"), HttpStatus.BAD_REQUEST);
}
UserEntity userEntity = usersService.findById(Integer.valueOf(userId));
Set<String> userRoles = new HashSet<>();
for (RoleEntity roleEntity : userEntity.getRoles()) {
userRoles.add(new StringBuilder().append(roleEntity.getRole()).toString());
}
UserDTO userDTO = UserDTO.builder()
.userId(userEntity.getUserId())
.firstName(userEntity.getFirstName())
.lastName(userEntity.getLastName())
.emailLogin(userEntity.getEmailLogin())
.isActive(userEntity.isActive())
.department(userEntity.getDepartmentEntity().getName())
.roles(userRoles)
.build();
return new ResponseEntity<>(userDTO, HttpStatus.OK);
}
Я хочу изменить часть, в которой я проверяю, существует ли пользователь.Я хочу использовать свой обработчик.