커스텀 애너테이션에 대하여..

SionBackEnd·2022년 8월 28일
0

Spring(봄)

목록 보기
12/22
post-thumbnail

커스텀 에너테이션의 필요

애너테이션을 사용하다보면 기존 애너테이션의 추가적인 기능까지 넣고 싶을 때 커스텀 애너테이션을 사용하게 된다.

사용법

애너테이션으로 클래스를 생성하고

@Constraint(validatedBy = {GenderValidator.class})
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidGender {
    String message() default "올바른 성별을 입력해주세요";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

이러한 형식으로 작성한다.

설명을 하자면 에너테이션을 만들때는 반드시 아래 3가지 메서드를 구현해야 한다.

  • message() : 실패시 공통적으로 메서지를 log에 띄어줌
  • groups() : 상황별 validation 제어를 위해 사용할 수 있다
  • payload() : 심각도를 나타낸다고 한다

하지만 아쉽게도 message()메소드를 제외하면 나머지들은 어떻게 사용하는지 감이 잡히지 않는다...

Constraint

@Constraint 어노테이션을 활용하면 사용자가 원하는 Constraint와 Validation을 만들어 이를 적용할 수 있다.

Target

@Target 어노테이션을 활용하면 적용될 범위를 지정할 수 있다.

Retention

@Retention 어노테이션을 활용하면 어노테이션이 어느레벨까지 유지되는지를 결정짓는다.

Validator클래스 생성

우리가 커스텀 애너테이션에 적용할 기능을 만들어주어야한다.

GenderValidator로 클래스를 생성하고 ConstraintValidator<>을 구현해야한다.
ConstraintValidator 인터페이스는 <A extends Annotation, T>로 구성되어있다.
그뒤 override를 initialize(), isValid()메서드들을 구현해야한다.

initialize메소드는 기능을 상속한 애너테이션을 그대로 쓰겠다는 메서드를 구현하면되고,
isValid메소드는 추가적인 기능을 넣어주면 되는것 같다.

참고한 웹사이트

참고 블로그

profile
많은 도움 얻어가시길 바랍니다!

0개의 댓글

관련 채용 정보