2022.12.20.TUE

ronglong·2022년 12월 20일
0

코드스테이츠 Day44

  1. Spring MVC - 예외 처리
  • 예외 처리 방법 2가지
    • @ExceptionHandler
      • Controller에서 @ExceptionHandler가 붙은 메서드를 통해 내부적으로 예외 처리하는 방법 ---> Controller마다 중복된 예외 처리 메서드 발생
      • Controller에서 요청/응답 처리만 해야하는데, 예외 처리까지 도맡게 되어 역할 분리가 안 됨
    • @RestControllerAdvice
      • @RestControllerAdvice가 붙은 클래스에서 @ExceptionHandler@ResponseStatus 가 붙은 예외 처리 메서드를 통해 모든 Controller의 예외 처리를 담당
      • 리턴값은 ErrorResponse
  • ErrorResponse 클래스를 통해 필요한 Error 정보만 클라이언트에게 전송
    • 생성자에 private 접근 제어자 설정
      -> of() 메서드를 통해 ErrorResponse 객체를 클래스 내부에서 생성
      -> 각각의 예외 처리를 위한 멤버 클래스 및 메서드 작성
  1. 기타 정리한 것
  • 지난 금요일 DTO 공부할 때, PatchDto 클래스에서 선택적 필드를 구사할 때 Optional을 썼었는데, 래퍼 클래스를 사용하면 null값이 허용되므로 자연스럽게 선택적 필드(requestBody가 null일 경우, 유효성 검사에서 제외) 구사 가능.
private Optional<@Range(min = 100, max = 50000) Integer> price = Optional.empty();
--->
@Range(min = 100, max = 50000) 
private Integer price;
  • Entity에는 필드가 있는데, Dto에는 매핑할 필드가 없는 경우, 실행시 warning이 뜨는데, 무시해도 됨. 없는 값은 기본값이 null.
  • MapStruct 사용시 우선 순위
    • @Builder > @AllArgsContructor(@NoArgsContructor 있으면 매핑 안 됨) > @Setter
    • MapStruct에서 Lombok이 정상적으로 작동하지 않을 때는, build.gradle 파일 확인. 코드는 위에서 아래로 흐르므로, dependencies 순서 확인.
    • @Builder 쓰는 이유
      https://pamyferret.tistory.com/67

<느낀 점>
와.. 지금 데일리 코딩 4문제 연속 못 풀었다. 26번부터 계속 막히는 중..
알고리즘 진짜.. ㅠㅠ

현타 와서 헬프 센터에서 공부 방법 FAQ 찾다가, 링크가 비어있길래 보내달라고 요청한 상태.

같이 개발자 준비하는 친구들에게도 말했더니, 애들이 엄청 격한 위로를 해줬다.
지금부터의 난이도는 나에게는 레퍼런스 보는 게 일상이라고 생각해야겠다.
그러고 레퍼런스 봤더니 레퍼런스가 50줄이나 되길래, 내일 보려고 일단 껐다.. ㅋㅋㅋ

섹션3는 API계층은 수월했는데, 예외 처리에서 조금 까다로워진 느낌이다.
내일은 더 힘내봐야지.

0개의 댓글