스프링 부트 Custom Annotation
🚨 이 글은 개인 학습을 위한 기록입니다. 잘못된 정보가 상당수 있을 수 있습니다.
🍀 개요
과제를 수행하다가 Custom Annotation을 만들어서 구현해내야 하는 상황이 발생했다.
레퍼런스 코드를 참조하며 수행하다가 다음과 같은 문제가 발생했다.
문제를 해결하기 위해 찾아보다가 커스텀 어노테이션에 대해 알게되었다.
📗 커스텀 어노테이션이란?
어노테이션 : 소스 코드가 컴파일되거나 실행될 때 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법
커스텀 어노테이션 : 원하는대로 커스텀해서 직접 만드는 어노테이션
🚌 구현
interface 앞에 @를 빼놓지 말자!
• @interface를 제대로 입력하면 빨간줄이 사라진다.
• PriceRangeValidator.Class의 빨간줄은 클래스를 구현하면 사라진다.
커스텀 어노테이션을 구현하기 위해 필요한 어노테이션에 대해 살펴보자.
(1) @Retention
- 어노테이션의 지속시간 결정
- RetentionPolicy : Retention 어노테이션의 속성
- 유지정책 : 애너테이션이 유지되는 기간을 지정하는 속성
- 유지정책에는 세가지가 있다. → source, class, runtime
- sources : 소스파일에 존재, 클래스 파일에는 존재 x. 컴파일 이후 어노테이션 소멸
- class : 클래스 파일에 존재, 실행시 사용 불가, 기본값. 클래스를 참조할 때까지 유효함
- runtime : 클래스 파일에 존재, 실행시 사용 가능. 컴파일 이후에도 어노테이션 참조 가능
(2) @Target
- 어노테이션을 적용할 대상을 지정
- 대상타입 : TYPE, FIELD, METHOD, PARAMETER 등...
- FIELD로 지정 : 위에서는 필드(멤버변수, 열거형 상수) 선언시를 시점으로 지정해주었다.
(3) @Constraint
- 사용자가 원하는 제한 사항과 유효성 검증을 만들어 적용 가능하다.