ExceptionControllerAdvisor.java 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.its.op.exception;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.context.support.DefaultMessageSourceResolvable;
  4. import org.springframework.http.HttpStatus;
  5. import org.springframework.http.ResponseEntity;
  6. import org.springframework.web.bind.MethodArgumentNotValidException;
  7. import org.springframework.web.bind.annotation.ControllerAdvice;
  8. import org.springframework.web.bind.annotation.ExceptionHandler;
  9. import javax.servlet.http.HttpServletRequest;
  10. import java.time.LocalDateTime;
  11. import java.util.List;
  12. import java.util.stream.Collectors;
  13. @Slf4j
  14. @ControllerAdvice
  15. public class ExceptionControllerAdvisor {//} extends ResponseEntityExceptionHandler {
  16. /*@Override
  17. protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
  18. List<String> errorList = ex
  19. .getBindingResult()
  20. .getFieldErrors()
  21. .stream()
  22. .map(DefaultMessageSourceResolvable::getDefaultMessage)
  23. .collect(Collectors.toList());
  24. return new ResponseEntity<>(
  25. NotValidExceptionResponse.builder()
  26. .timestamp(LocalDateTime.now())
  27. .status(HttpStatus.BAD_REQUEST.value())
  28. .title("Arguments Not Valid")
  29. .developerMessage(ex.getClass().getName())
  30. .err(errorList)
  31. .build(), HttpStatus.BAD_REQUEST
  32. );
  33. }*/
  34. @ExceptionHandler(MethodArgumentNotValidException.class)
  35. public ResponseEntity<ErrorResponse> methodValidException(MethodArgumentNotValidException ex, HttpServletRequest request) {
  36. log.warn("MethodArgumentNotValidException 발생!!! url:{}, trace:{}",request.getRequestURI(), ex.getStackTrace());
  37. List<String> errorList = ex
  38. .getBindingResult()
  39. .getFieldErrors()
  40. .stream()
  41. .map(DefaultMessageSourceResolvable::getDefaultMessage)
  42. .collect(Collectors.toList());
  43. //ErrorResponse errorResponse = makeErrorResponse(e.getBindingResult());
  44. //return new ResponseEntity<ErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
  45. return new ResponseEntity<>(
  46. ErrorResponse.builder()
  47. .timestamp(LocalDateTime.now())
  48. .status(HttpStatus.BAD_REQUEST.value())
  49. .title("Arguments Not Valid")
  50. .message(ex.getClass().getName())
  51. .errors(errorList)
  52. .build(), HttpStatus.BAD_REQUEST);
  53. }
  54. /*
  55. private ErrorResponse makeErrorResponse(BindingResult bindingResult) {
  56. String code = "";
  57. String description = "";
  58. String detail = "";
  59. //에러가 있다면
  60. if (bindingResult.hasErrors()) {
  61. //DTO에 설정한 meaasge값을 가져온다
  62. detail = bindingResult.getFieldError().getDefaultMessage();
  63. //DTO에 유효성체크를 걸어놓은 어노테이션명을 가져온다.
  64. String bindResultCode = bindingResult.getFieldError().getCode();
  65. switch (bindResultCode){
  66. case "NotNull":
  67. //code = ErrorCode.NOT_NULL.getCode();
  68. //description = ErrorCode.NOT_NULL.getDescription();
  69. break;
  70. case "Min":
  71. //code = ErrorCode.MIN_VALUE.getCode();
  72. //description = ErrorCode.MIN_VALUE.getDescription();
  73. break;
  74. }
  75. }
  76. return new ErrorResponse(0, code, null);
  77. }
  78. */
  79. }