[Java] Meta Annotation @Target, @Retention
https://frogand.tistory.com/190
지난 포스팅에 @CurrentUser란 커스텀 어노테이션을 만들면서 @Target, @Retention을 사용했습니다.
meta-annotation
메타 어노테이션은 다른 어노테이션에서도 사용되는 어노테이션을 말하며, 커스텀 어노테이션을 생성할 때 주로 생성된다.
@Target
@Target은 자바 컴파일러가 어노테이션이 어디에 적용될지 결정하기 위해 사용한다.
예를들어 Spring의 @Service 어노테이션의 ElementType.Type은 해당 어노테이션은 타입 선언 시 사용한다는 의미다.
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
@Retention은 어노테이션이 실제로 적용되고 유지되는 범위를 의미한다.
RetentionPolicy.RUNTIME : 컴파일 이후에도 JVM에 의해 계속 참조가 가능하다. 주로 리플렉션이나 로깅에 많이 사용한다.
RetentionPolicy.CLASS : 컴파일러가 클래스를 참조할 때까지 유효하다.
RetentionPolicy.SOURCE : 컴파일 전까지만 유효한다. 즉, 컴파일 이후에는 사라지게 된다.
출처
https://sanghye.tistory.com/39
[Spring] Meta Annotation 이란?(@Target, @Retention)
Spring 에서는 Anntotation 사용에 대한 기능을 상당히 많이 제공하고 있습니다. 주로 사용하는 @Controller, @Service, @Repostiroy 등 많은 Annotation 이 존재합니다. 해당 Annotion 은 각 기능에 필요한 만큼..
sanghye.tistory.com
'programming language > Java' 카테고리의 다른 글
[Java] Enum을 활용적으로 쓰는 법 (0) | 2022.11.16 |
---|---|
[Java] setter를 지양하라 > HOW? (0) | 2022.10.28 |
[Java] ModelMapper 라이브러리 (0) | 2022.06.02 |
[Java] BigDecimal 비교 (equals 대신 compareTo 메서드로 비교) (0) | 2022.05.18 |
[Java] 문자열 앞뒤 공백 제거하기 trim() vs strip() 차이 / The difference between trip() and s (0) | 2022.05.04 |
댓글 개