14. MVC 4 : 날짜 값 변환, @PathVariable, 익셉션 처리

김동영·2022년 10월 7일
0

스프링5.0 스터디

목록 보기
1/2

14.3 @DateTimeFormat, @JsonFormat

  • Dto 파라미터에 @DateTimeFormat 설정 시, 입력된 문자열 값을 Spring 에서 역직렬화하여 LocalDate 또는 LocalDateTime 으로 변환시켜준다.

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
      @Schema(description = "생성시간 샘플", example = "2022-10-07T15:16:50.599")
      private LocalDateTime yyyyMMddHHmmssSSS;
  • @JsonFormat 어노테이션으로도 역직렬화가 가능하다.

    @JsonFormat(pattern = "yyyyMMddHHmmssSSS")
     @Schema(description = "생성시간 샘플", example = "20221007151650599")
     private LocalDateTime yyyyMMddHHmmssSSS;

    JsonFormat 스웨거 결과

  • @DateTimeFormat 로 년월일시분초 를 붙이게 될 경우, content-type=application/json 일 때 파싱오류가 발생함에 주의한다.
    DateTimeFormat json 파싱오류

참고) ObjectMapper를 통해 LocalDate 으로 역직렬화하려는 경우 Spring Boot 기준 jackson-datatype-jsr310 디펜던시가 추가로 필요하다.
내부적으로 ObjectMapper 를 통해 직렬화하는 과정에서 LocalDate, LocalDateTime 직렬화에 아래 디펜던시가 필요함.
jackson-datatype-jsr310 디펜던시 오류

  • 또한 해당 어노테이션은 Spring Boot 내 내장된 jackson-annotations 디펜던시에 있는 기능이기 때문에 Spring 사용 시, 관련 디펜던시를 따로 추가해야 한다.

참고 글) @DateTimeFormat, @JsonFormat 분석글

14.4 WebDataBinder

  • @DateTimeFormat 어노테이션을 통해 받은 날짜 문자열을 webDataBinder 가 LocalDateTime, LocalDate 로 변환시킨다.
  • 이는 DispatcherServlet 이 요청 처리를 위해 RequestMappingHandlerAdapter 를 사용할 때, 어뎁터가 내부적으로 변환시킨다.
  • WEbDataBinder 는 ConversionService 에 변환 역할을 위임하여 처리한다.
    @EnableWebMvc 어노테이션 설정 시, DefaultFormattingConversionService 로 설정된다.

14.6 @PathVariable

  • @PathVariable 사용 시, 파라미터를 Url로 전달받을 수 있다.
    @GetMapping("/{id}")
     public ApiResult<HelloFindRspDto> find(@PathVariable Long id) {
            return ok(helloService.find(id));
     }
    PathVariable 스웨거 실행결과
profile
프레임워크와 함께하는 백엔드 개발자입니다.

0개의 댓글