Java & Spring/자바

Annotation(어노테이션)

Zin0_0 2020. 10. 20. 20:09
반응형

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 절을 가질 수 없음
    • 어노테이션은 인터페이스의 한 종류기 때문에 추상 메소드로 작성해야함
반응형