/////
Search

221128

작성자
김지영
김희정
이현주
날짜
2022/11/28
학습 내용
로그인, Exception, Enum
텍스트
11/29 발표 예정 발표 : 김희정

Springboot

User 회원 가입 기능 만들기!
1.
클라이언트가 요청한 정보를 UserJoinRequest에 담아서 Controller >> Service 계층으로 보낸다.
2.
Service계층에서 해당 userName이 DB에 중복되는지 확인한다. (findByName)
a.
중복되면 Custom Exception인 HospitalReviewException 을 발생시킨다.
b.
중복이 아니면 해당 User를 Save한다.
3.
save된 User를 UserDto에 담아서 Controller에 보낸다.
4.
Controller에서는 UserJoinResponse로 담고 Response의 success메소드를 통해 Response 객체를 리턴하여 클라이언트에 응답한다.
resultCode : “Success”
result : UserJoinResponse정보
코드

Springboot 예외처리

userName이 중복일 경우 예외처리!
1.
중복이 되면 Service계층에서 HospitalReviewException 을 발생시킨다.
2.
ExceptionManager에서 해당 Exception을 처리하여 ResponseEntity를 클라이언트에 리턴한다.
enum으로 정의한 ErrorCode 정보와 Response의 error메소드를 활용
코드
예외가 발생하면 요청을 보낸 클라이언트에 어떤 문제가 발생했는지 상황 전달
>> 각 레이어에서 발생한 예외를 엔드포인트 레벨인 컨트롤러로 전달

@ControllerAdvice와 @RestControllerAdvice

Spring에서 제공하는 전역적으로 예외 처리할 수 있는 어노테이션
차이점 : @RestControllerAdvice는 @ResponseBody가 붙어 있어 응답을 Json으로 내려줌
해당 어노테이션이 붙은 클래스는 스프링 빈으로 등록됨 >> 에러 핸들링하는 클래스로 에러 처리 위임
장점
하나의 클래스로 모든 컨트롤러에 대해 전역적으로 예외 처리가 가능함
직접 정의한 에러 응답을 일관성있게 클라이언트에게 내려줄 수 있음
별도의 try-catch문이 없어 코드의 가독성이 높아짐

Enum

Enum : 관련있는 상수들의 집합, 열거형
비슷한 상수끼리 모은다.
ex) DAY, MONTH
private final static int MONDAY = 1; private final static int TUESDAY = 2;
Java
복사
enum MONTH{ JANUARY, FEBRUBY,,, } enum DAY{ MONDAY, TUESDAY, .. }
Java
복사
@AllArgsConstructor @Getter public enum ErrorCode { DUPLICATED_USER_NAME(HttpStatus.CONFLICT,"해당 userName이 중복 됩니다."); private HttpStatus status; private String message; } //enum 사용 ErrorCode.DUPLICATED_USER_NAME; ErrorCode.DUPLICATED_USER_NAME.getStatus();
Java
복사
여러개의 필드값 사용 가능
DUPLICATED_USER_NAME, HttpStatus.CONFLICT,"해당 userName이 중복 됩니다." 가 모두 같은 의미
장점, 사용하는 이유
가독성
인스턴스 생성, 상속 방지
키워드 enum 사용 >> 구현 의도가 열거임을 분명히 나타냄