네로개발일기

개발자 네로의 개발 일기, 자바를 좋아합니다 !

반응형

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

 

728x90
반응형
blog image

Written by ner.o

개발자 네로의 개발 일기, 자바를 좋아합니다 !