-
Annotation
- Annotation은 본래 주석이란 뜻이지만, 현재는 주석과 달리 주석처럼 코드에 달아서 클래스에 특별한 의미를 부여하거나 기능을 주입하는 기능을 가지고 있다.
- 런타임 시 특정 기능을 실행하도록 정보 제공
- 3 종류
- Built-in annotation
- JDK에 내장되어 있으며 @Override가 대표적인 예시
- Meta annotation
- 어노테이션에 대한 정보를(동작 대상과 시점 결정) 나타내기 위한 어노테이션
- @Target이나 @Retention과 같은게 대표 예시
- Custom Annotation
- 개발자가 직접 만드는 어노테이션
- Meta annotation을 활용해서 만들 수도 있음
- 스프링 프레임워크에서 주로 의존성 주입(@Autowired)과 역할 정의(@service과 같은 것)에 활용
- 제약 사항
- interface 앞에 기호 @를 붙여서 생성
- 어노테이션 타입 선언은 제네릭일 수 없음
- extends 절을 가질 수 없음(어노테이션은 암묵적으로 java.lang.annotation.Annotation을 확장하기 때문)
- 메소드는 매개변수를 가질 수 없음
- 메소드 선언은 throws 절을 가질 수 없음
- 어노테이션은 인터페이스의 한 종류기 때문에 추상 메소드로 작성해야함