그저 골뱅이.
라고 알고있는 내가 , 그냥 좀 더 이게 무엇일까 하는 생각에 알아보았다.
JDK 1.5버전부터 생긴 문법이다.
아주 자주 본 어노테이션으로 , @Override 가 있을 것이다.
보통 그냥 생각없이 오버라이드를 하면, 실제로 스펠링 실수나, 그런 부분을 컴파일 과정에서 잡아내기 힘들 것이다.
@Override를 선언하면, 부모클래스 중 override 할 함수들을 찾아주고, 만약 그런 메서드가 없으면 에러를 알려주는 등, 편한 기능을 제공한다.
커스텀 어노테이션은 다음과 비슷한 구조를 가진다.
@Target({ElementType.[적용대상]})
@Retention(RetentionPolicy.[정보유지되는 대상])
public @interface [어노테이션명]{
public 타입 elementName() [default 값]
...
}
@Target : 어노테이션을 적용할 위치 선택
ElementType.PACKAGE : 패키지 선언
ElementType.TYPE : 타입 선언
ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
ElementType.CONSTRUCTOR : 생성자 선언
ElementType.FIELD : 멤버 변수 선언
ElementType.LOCAL_VARIABLE : 지역 변수 선언
ElementType.METHOD : 메서드 선언
ElementType.PARAMETER : 전달인자 선언
ElementType.TYPE_PARAMETER : 전달인자 타입 선언
ElementType.TYPE_USE : 타입 선언
@Retention : 컴파일러가 어노테이션을 어느 시점까지 영향을 끼칠지 결정
RetentionPolicy.SOURCE : 컴파일 전까지만 유효
RetentionPolicy.CLASS : 컴파일러가 클래스를 참조할 때까지 유효
RetentionPolicy.RUNTIME : 컴파일 이후 런타임 시기에도 JVM에 의해 참조가 가능(리플렉션)
-> 왜 커스텀 어노테이션을 만드는가?
-> 간결함!!
BUT 오히려 장기적 관점에서 시의적절한 것인지 확인할 필요가 있음.
커스텀 어노테이션 만드는 방법은 아래 글을 참고하자!!
Spring Annotation의 원리와 Custom Annotation 만들어보기
‼️ Spring Annotation의 원리와 Custom Annotation 만들어보기
donghyeon.dev
'TIL' 카테고리의 다른 글
Scheduler vs Spring batch vs DB Procedure (0) | 2022.11.08 |
---|---|
instanceof (0) | 2022.11.08 |
자바 Static 왜 쓰는지. (0) | 2022.11.03 |
ER 다이어그램 정리 (0) | 2022.11.02 |
interceptor vs Filter (0) | 2022.10.27 |