TIL

Annotation이란?

하얀잔디 2022. 11. 8. 11:11
그저 골뱅이.

 

라고 알고있는 내가 , 그냥 좀 더 이게 무엇일까 하는 생각에 알아보았다.

 

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 오히려 장기적 관점에서 시의적절한 것인지 확인할 필요가 있음.

 

 

커스텀 어노테이션 만드는 방법은 아래 글을 참고하자!!

 

https://donghyeon.dev/spring/2020/08/18/Spring-Annotation%EC%9D%98-%EC%9B%90%EB%A6%AC%EC%99%80-Custom-Annotation-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0/

 

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