민팽로그

[오늘도, 안녕] 2023.07.26 개발 일지 본문

프로젝트/오늘도, 안녕

[오늘도, 안녕] 2023.07.26 개발 일지

민팽 2023. 8. 14. 23:36

1. CustomException

  • 나중에 에러 추적 & 디버깅을 위한 로그를 남기고 프론트쪽에 에러에 대한 정확한 메세지를 전달해주기 위해 에러 코드와 에러 원인을 반환해주어야 할 필요성을 느낌
  • RuntimeException을 상속받는 커스텀 예외 클래스를 만들어서 사용
  • 에러는 에러 코드와 에러 메세지로 enum 클래스에 상수 형태로 관리
  • 예외 처리를 위해 오류를 검사하는 역할을 하는 클래스를 따로 만들어 둠
  • 컨트롤러에서 CustomException이 발생하면 이를 처리하는 RestControllerAdvice 클래스를 구현
  • 에러 내용을 기록하는 로깅도 필요할 것 같음

구현 사진

더보기
폴더 구조

 

ControllerAdvice

 

에러 메세지 enum
에러 검사 클래스

 

CustomException 클래스

 

에러 발생 시 코드 번호와 메세지를 반환해 줄 ResponseDto

 

2. Swagger

  • 전에는 POSTMAN에 API 명세서를 만들었는데 이 작업이 상당히 귀찮았음..
  • Swagger를 사용 → 개발자 각자가 API를 개발 후 자신이 개발한 API에 대한 문서를 코드로 쉽게 만들 수 있어서 좋았고 API 요청 테스트도 쉽게 할 수 있었음

 

3. @Transactional

  • transactional 사용 시 service에서는 문제가 없어서 DB insert작업까지 완료됐더라도, controller쪽에서 에러가 발생하면 rollback되지 않음(당연한거지만). controller까지 트랜잭션을 가져갈 수 있지만 좋은 설계가 아니라고 들었음 → 나중에 정리할 수 있음 하자!!
  • 전에는 transactional 어노테이션이 2개인걸 몰랐는데 오늘 보니까 2개!
    • 하나는 javax → 자바에서 제공하는 표준 어노테이션
    • 다른 하나는 springframework에서 제공하는 어노테이션 → javax 어노테이션의 확장판이라고 생각하면 됨. 더 섬세한 설정이 가능.
  • 여러 함수로 분리하여 코드를 짰기 때문에, 트랜잭션의 부모-자식 관계를 컨트롤해야 한다면 springframework의 어노테이션 사용하는게 좋을 것 같음
    •  
    •  

'프로젝트 > 오늘도, 안녕' 카테고리의 다른 글

[오늘도, 안녕] 2023.07.28 개발 일지  (0) 2023.08.14
Comments