1. 개요
일정 관리 앱 만들기 과제를 진행하며, 겪은 이슈를 다뤄보겠습니다.
2. 트러블 슈팅
(1) NullPointException
● 배경
단건 일정 수정 시 상태코드 500 서버 에러 발생
● 원인
'schedule.getPassword()' is null로 비밀번호 데이터를 불러올 수 없음
schedule은 scheduleRepository.findById(id)를 통해 데이터를 가져오는데 그렇다면 해당 코드에 문제가 있을 것으로 생각함
findById(id)의 sql query코드에서 비밀번호를 가져오는 코드가 없음
● 해결방법
rs.getString("password")를 추가하여 schedule.getPassword()가 정상적으로 작동함
(2) Refactoring - 전체 일정 조회 시 요청 데이터가 없을 경우 예외 발생하기
● 수정 전
기존 코드에서는 요청 데이터가 없을 경우 빈 리스트를 반환( 200 OK [ ] )
데이터가 없을 경우 예외를 발생시키도록 코드 리팩토링 진행
● 수정 후
① List<ScheduleResponseDto> schedules 변수로 변환
② if문으로 리스트가 비어 있을 경우 ResponseStatusException( 404 NOT FOUND ) 발생
3. 마무리
이번 과제를 통해서 CRUD와 3 Layered Architecture의 동작 원리를 이해할 수 있었습니다. 데이터베이스를 연동하여 API 실행 및 테스트를 통해 결과값을 확인해 보았습니다. 아직 상태 메시지 확인 방법과 모든 예외 처리에 대한 방법을 모르지만 다음 단계에서 배워가고자 합니다.
3 Layered Architecture
3 Layered Architecture
'개발 > 부트캠프' 카테고리의 다른 글
본캠프 : 개인 과제(일정 관리 앱 만들기)_ CRUD & 3 Layered Architecture 동작 과정 (0) | 2025.02.02 |
---|---|
본캠프 : Spring 기초_특강2_@AllArgsConstructor & @RequiredArgsConstructor (0) | 2025.01.31 |
본캠프 : Spring 기초 강의 완강 요약 (0) | 2025.01.27 |
본캠프 : Spring 기초_특강1_3 Layered Architecture (0) | 2025.01.24 |
본캠프 : Spring 기초_2주차 (1) | 2025.01.22 |