Java - Annotation


1. 어노테이션이란?

  • 어노테이션은 프로그래밍 언어에서 코드에 부가적인 정보를 제공하는 특별한 형식의 표기법으로, 주석과는 달리 컴파일러나 런타임에 의해 해석되어 프로그램에 영향을 미친다. Java에서는 @ 기호를 사용하여 특정 기능이나 속성을 나타내는 어노테이션을 정의하고 사용할 수 있다.


1.1. 표준 어노테이션

  • 자바에서 지원해주는 표준 어노테이션

  • @Override
    • 해당 어노테이션은 메서드가 부모 클래스나 인터페이스의 메서드를 재정의하고 있음을 나타낸다.
    • 컴파일러는 이 어노테이션을 통해 오버라이드 관련 오류를 잡을 수 있다.
  • @Deprecated
    • 해당 어노테이션은 특정 클래스, 메서드, 또는 필드가 더 이상 권장되지 않거나 사용되지 않음을 나타낸다.
    • 개발자에게 해당 요소를 사용하지 말고 대체할 것을 권고한다.
  • @SuppressWarnings
    • 해당 어노테이션은 컴파일러에게 특정 경고를 무시하도록 지시한다.
    • 예를 들어, “unchecked” 또는 “deprecation”과 같은 경고를 억제할 수 있다.


1.2. 메타 어노테이션

  • @Retention(RetentionPolicy.RUNTIME)
    • 어노테이션 유지 정책 설정
  • @Target(ElementType.METHOD)
    • 어노테이션을 어디에 적용할 것인지 설정
  • 이렇게 어노테이션 위에 적용이 가능한 어노테이션을 메타 어노테이션이라고 한다.
  • 이렇게 Java에서 지원해주는 메타 어노테이션을 제외하고는 어노테이션간의 상속 개념은 없다. 그러나 Spring에서는 그런 어노테이션 상속 기능을 지원해준다.
    • 예를들면, 통상적으로는 메타어노테이션을 제외하면, 어노테이션 위에 다른 어노테이션이 붙지 않는다. 그러나 스프링에서는 가능하고, 우리가 @GetMapping을 사용하면 마치 @RequestMapping을 사용한거 같은 효과를 내는게, GetMapping이 RequestMapping을 상속 받고있는 듯한 효과를 갖고 있기 때문이다. 이건 스프링에서 지원해준다.


1.3. 사용자 정의 어노테이션

  • 메타 어노테이션이나, Spring의 어노테이션 상속을 통해서 사용자가 원하는 어노테이션을 만들 수 있다.
      @Component
      @Target(ElementType.TYPE)
      @Retention(RetentionPolicy.RUNTIME)
      public @interface MyComponent {
    		
      }
    






results matching ""

    No results matching ""