POST /api/members: 팀원 이름, 나이, MBTI 정보를 JSON으로 받아 DB에 저장.
GET /api/members/{id}: 고유 식별자(ID)를 통해 팀원 상세 정보 조회.
Entity: JPA를 이용해 DB 테이블과 매핑 (Member).
DTO: 데이터 전송 객체 분리 (MemberRequest, MemberResponse)하여 엔티티 보호.
Repository: Spring Data JPA 인터페이스 구현.
Service: 비즈니스 로직 처리 및 @Transactional 적용.
Controller: REST 엔드포인트 구현 및 HTTP 상태 코드(201, 200) 반환.
application.yml을 활용해 Local(H2)과 Prod(MySQL) 환경 분리.
${DB_NAME:testdb} 형식을 사용하여 환경변수를 통한 동적 DB 연결 설정.
문제점: 존재하지 않는 ID 조회 시 500 에러가 발생하거나, Spring Boot 기본 에러 페이지(White Label Error Page)가 노출되어 클라이언트가 원인을 파악하기 어려움.
해결 방안:
@RestControllerAdvice를 사용한 전역 예외 처리기(GlobalExceptionHandler) 도입.
ErrorResponse DTO를 정의하여 에러 코드와 메시지를 공통 규격으로 반환하도록 개선.
결과: 예외 발생 시 시스템의 안정성을 높이고, 프론트엔드와 명확한 에러 소통 가능.
문제점: API 호출 성공 여부나 에러 발생 지점을 콘솔에서 확인하기 위해 매번 System.out.println을 쓸 수 없으며, 에러 발생 시 원인(Stack Trace) 파악이 힘듦.
해결 방안:
Slf4j를 도입하여 로그 레벨(INFO, ERROR)별 전략 수립.
결과: 운영 환경에서 문제 발생 시 로그만으로 빠른 원인 파악이 가능해짐.