12월 28일 목 TIL

장숭혁·2023년 12월 29일
0

TIL작성

목록 보기
40/60
  • @MappedSuperclass: JPA의 어노테이션 - 이 클래스를 상속받는 엔티티 클래스에서 이 클래스의 필드들도 컬럼으로 인식하게끔 한다. 객체의 입장에서 공통 매핑 정보가 필요할 때 사용한다.
  • @EntityListeners(AuditingEntityListener.class): JPA Auditing 기능을 사용하기 위한 어노테이션 - 해당 어노테이션을 사용하면, 엔티티 객체가 생성/변경될 때 시간을 자동으로 넣어준다.

  • @Column(updatable = false): 해당 컬럼을 SQL UPDATE 문에서 제외한다. 즉, 한번 설정된 'createdAt' 값은 변경되지 않는다.

public interface ErrorCode {

    String name();
    HttpStatus getHttpStatus();
    String getMessage();
}
@Getter
@RequiredArgsConstructor
public enum UserErrorCode implements ErrorCode {
    REJECTED_USER_EXECUTION(HttpStatus.FORBIDDEN, "수정 권한이 없어요!"),
    NON_USER_EXSIST(HttpStatus.NOT_FOUND, "해당 사용자가 존재하지 않아요!"),
    ALREADY_EXSIST_USER(HttpStatus.FORBIDDEN, "이미 존재하는 사용자에요!"),
    PASSWORD_IS_NOT_MATCH(HttpStatus.FORBIDDEN, "비밀번호가 일치하지 않아요!"),
    RECNTLY_SET_PASSWORD(HttpStatus.FORBIDDEN,"최근 3번안에 사용한 비밀번호는 사용할 수 없어요!"),
    NON_LOGIN_USER(HttpStatus.NOT_FOUND,"로그인 된 유저가 아니에요!"),
    NON_USER(HttpStatus.NOT_FOUND, "존재하지 않는 유저 입니다.");
    private final HttpStatus httpStatus;
    private final String message;
}

- name(): 이 메소드는 enum의 이름을 반환한다. 모든 Java enum에는 기본적으로 name() 메소드가 있으므로 UserErrorCode에서 별도로 구현할 필요가 없다.

💻 사용 예시

UserErrorCode errorCode = UserErrorCode.REJECTED_USER_EXECUTION;
System.out.println(errorCode.name());

-각각의 enum 값 (REJECTED_USER_EXECUTION, NON_USER_EXSIST 등)은 특정 HTTP 상태 코드와 메시지를 가지고 있다

public class NonUserExsistException extends RestApiException {

    public NonUserExsistException(ErrorCode errorCode) {
        super(errorCode);
    }
}

-RestApiException 클래스는 RuntimeException을 상속받는다.
-사용자 정의 런타임 예외 클래스를 작성할 수 있다.

user = userRepository.findByUsername(username)
                .orElseThrow(() -> new NonUserExsistException(NON_USER_EXSIST));
 if (!passwordEncoder.matches(password, user.getPassword())) {
            throw new PasswordIsNotMatchException(PASSWORD_IS_NOT_MATCH);
        }

-이 코드에서와 같이 사용자 정의 런타임 exception을 날릴 수 있는 특징이 있고 Errorcode 부분에 enum요소를 넣음으로서 UserErrorCode를 출력시킨다.
-이 코드에서는 HttpStatus.NOT_FOUND 상태 코드와 "해당 사용자가 존재하지 않아요!"가 출력되거나 HttpStatus.FORBIDDEN 상태 코드와 "비밀번호가 일치하지 않아요!"가 출력될 것이다.

profile
코딩 기록

0개의 댓글

관련 채용 정보