Lv5. ‘내’가 정의한 문제와 해결 과정
[문제 인식 및 정의]
[해결 방안]
2-1. [해결 방안제시]
2-2. [해결 완료]
2-3. [전후 데이터 비교][회고]
일단 지금 보는 프로젝트는 todo에 관련된 게시글을 쓰고, 게시글 안에 댓글을 달 수 있는 기능이 주축이다.
로그인과 회원가입이 있고 회원들간의 역할이 나누어져있다.

todoID를 찾지 못할 경우 InvalidRequestException 발생InvalidRequestException는 요청 자체가 잘못된 경우 사용해야 함.404 Not Found 케이스임.todoID 값을 검증하는 Validation 추가findById에서 일어나는 예외로 404 Not Found 추가

GlobalExceptionHandler 에서 반복되는 코드가 상당히 있음GlobalExceptionHandler에서 하나하나 처리하는 방식이 불편할 것이다.공통 부모 예외 클래스 방식으로 변경이 가장 쉬워 보인다.

GlobalExceptionHandler 에서 반복되는 코드를 줄이고, 오류가 늘어나더라도 추가되는 코드가 줄어들도록 생각했음.
RuntimeException 은 message만 받길래 커스텀 에러클래스에서 HttpStatus도 보관하도록 설정만약 오류종류가 늘어나게된다면

여기에 오류 종류에 맞는 클래스 하나 생성
고민사항 & 해결법
enum사용이 낫나..?
enum을 사용하는 경우
enum은 상수로 사용되는 만큼 형태 변경이 어렵다.- 작은 프로젝트 + 예외의 형태가 잘 변하지 않음 일수록
enum을 쓴다고함
그대로 두기로했다!
config의 구성들과 domain>common과의 관계가 모호하다고 느꼈음InValidRequestException으로 처리되고 있는것을 발견auth-> exception의 내용이 다른 exception과 같이 관리되어야 한다고 생각.GlobalExceptionHandler가 다른 exception과 분리되어있어서 찾기 불편하다는 생각을 했음.Logging역할을 하는 클래스가 두개 생겨서 이것도 따로 분류하면 좋겠다고 생각함.expert
├── domain
│ ├── user
│ ├── comment
│ └── ... (도메인별 패키지)
├── global
│ ├── config ← 설정
│ ├── exception ← 공통 예외
│ ├── logging ← LoggingAspect, LoggingInterceptor
│ ├── auth
│ │ ├── jwt ← JwtFilter, JwtUtil
│ │ ├── annotation ← @Auth
│ │ ├── resolver ← AuthUserArgumentResolver
│ │ └── dto ← 인증 관련 DTO
│ └── common
│ └── entity ← BaseEntity, 공통 상속 클래스
이런식으로 생각했음.
global 패키지를 생성 domain 안의 common을 global안에 모두 넣고 다시 기능에 따라서 분류
build() 를 사용하는 것으로 알고있다.

findBy@@orElseThrow 를 만드는게 낫겠다는 판단을 함.


위 처럼, 반환해야하는 에러 메시지가 다를 경우는 그냥 놔둠


user 엔티티 내부에 비밀번호를 변경하느 ㄴ함수와
입력한 비밀번호가 저장된 비밀번호가 같은지 검증하는 함수를 생성했음.
그리고 비밀번호를 교체하는 함수도 저 두 함수를 이용하는 방식으로 변경함
"담당자를 등록하려고 하는 유저나 일정을 만든 유저가 유효하지 않습니다."에러 코드 메시지 내용이 모호하다.
검증하는 로직은 따로 다 내부함수로 빼줌.
User.fromAuthUser(authUser); 이라는 static 함수를 사용하지 않고 바로 id값만 가져옴엄 음 엄