728x90
어노테이션 영어사전: 주석, extra information

1. built-in 어노테이션 : Java 코드에 적용되는 어노테이션 
   ex) @Overried, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface
2. Meta 어노테이션 : 다른 어노테이션에 적용되기 위한 어노테이션(custom-annotation 생성 시)
   ex) @Retention, @Documented, @Target...
meta-annotaiton custom-annotation(커스텀 어노테이션) 생성할 때 주로 사용. 
cf) Meta-Data :  데이터에 대한 데이터
@SpringBootApplication @Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@Target Java compiler 가 annotation이 어디에 적용될지 결정하기 위해 사용. 

ElementType.PACKAGE : 패키지 선언
ElementType.TYPE : 타입 선언
ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
ElementType.CONSTRUCTOR : 생성자 선언
ElementType.FIELD : 멤버 변수 선언
ElementType.LOCAL_VARIABLE : 지역 변수 선언
ElementType.METHOD : 메서드 선언
ElementType.PARAMETER : 전달인자 선언
ElementType.TYPE_PARAMETER : 전달인자 타입 선언
ElementType.TYPE_USE : 타입 선언
출처 : https://sanghye.tistory.com/39
@Retention Annotation 이 실제로 적용되고 유지되는 범위

RetentionPolicy.SOURCE  소스코드(.java)까지
RetentionPolicy.CLASS     클래스파일(.java) 까지
RetentionPolicy.RUNTIME 런타임 까지

https://jeong-pro.tistory.com/234
@Documented 해당 어노테이션을 javadoc에 포함시킴
@Inherited 어노테이션의 상속 허용 
@Repeatable java8부터 연속적으로 어노테이션 선언가능
   
   

'JAVA' 카테고리의 다른 글

[1028web JSTL ]커스텀 라이브러리  (0) 2022.03.19
VelocityEngine  (0) 2022.02.19
Java 프로그래밍 언어의 코드 규칙, java 표준 코딩  (0) 2021.12.16
[1028web annotation] 어노테이션  (0) 2021.08.29

+ Recent posts