@interface 를 사용해서 선언
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface BusinessService {
String version() default "";
}
TYPE: 클래스, 인터페이스, 열거형
FIELD: 필드, 열거형 상수
METHOD: 메서드
PARAMETER: 매개변수
CONSTRUCTOR: 생성자
LOCAL_VARIABLE: 지역변수
ANNOTATION_TYPE: 메타 어노테이션 (어노테이션에 붙이는 어노테이션)
PACKAGE: 패키지
TYPE_PARAMETER: 타입 매개변수 (Java 8+)
public <@NonNull E> List<E> process(List<E> list) {
return list;
}
TYPE_USE: 타입이 사용되는 모든 곳 (Java 8+)
private @NonNull String email;
SOURCE: 소스코드에만 존재(컴파일 후 삭제)
CLASS: 클래스 파일에 포함(런타임에 접근 불가)
Lombok 등의 코드 생성 라이브러리RUNTIME: 런타임까지 유지