Annotations

2024. 6. 21. 23:14정보처리,전산/springboot

반응형

Java에서는 Annotations 을 사용하여 클래스, 메서드, 필드, 매개변수 등에 부착되어 다양한 정보를 제공하며 메타데이터로 사용된다.

내장 애노테이션 (Built-in Annotations)

@Override
    메서드가 슈퍼클래스의 메서드를 오버라이드하고 있음을 나타내고 컴파일러가 오버라이드 여부를 검증하여 잘못된 오버라이드를 방지한다.

   @Override
   public String toString() {
       return "Custom toString implementation";
   }



@Deprecated
   해당 요소가 더 이상 사용되지 않으며, 앞으로 사라질 수 있으며 코드에 경고 메시지를 출력한다.
 
 

 @Deprecated
   public void oldMethod() {
       // Old implementation
   }




@SuppressWarnings
 컴파일러 경고를 무시하도록 지시한다.

   @SuppressWarnings("unchecked")
   public void someMethod() {
       List rawList = new ArrayList(); // unchecked warning suppressed
   }


   

 

 

 



@SafeVarargs
    제네릭 가변인자 메서드에서 발생할 수 있는 잠재적 타입 안전성 문제를 억제하며 final 또는 static 메서드에서만 사용된다.

@SafeVarargs
   public static <T> void printList(T... elements) {
       for (T element : elements) {
           System.out.println(element);
       }
   }

 

 

 

 

 

 


@FunctionalInterface


해당 인터페이스가 함수형 인터페이스임을 나타낸다. 함수형 인터페이스는 하나의 추상 메서드를 가지는 인터페이스이다.
  
 

@FunctionalInterface
   public interface MyFunctionalInterface {
       void execute();
   }


  

 

 

 

 


메타 애노테이션 (Meta-Annotations)

메타 애노테이션은 다른 애노테이션을 정의하는 데 사용된다:

@Retention
   - 애노테이션이 유지되는 기간을 지정한다.
   - RetentionPolicy 타입의 값을 가진다: SOURCE, CLASS, RUNTIME.

@FunctionalInterface
   public interface MyFunctionalInterface {
       void execute();
   }



@Target
   - 애노테이션이 적용될 요소의 타입을 지정한다.
   - ElementType 타입의 값을 가진다: TYPE, FIELD, METHOD, PARAMETER, 등.
  

 @Target(ElementType.METHOD)
   public @interface MyAnnotation {
       // ...
   }




@Documented
   - 애노테이션이 Javadoc에 포함되도록 지정한다.

@Documented
   public @interface MyAnnotation {
       // ...
   }




@Inherited
   - 애노테이션이 서브클래스에 상속되도록 지정한다.

   @Inherited
   @Retention(RetentionPolicy.RUNTIME)
   @Target(ElementType.TYPE)
   public @interface MyAnnotation {
       // ...
   }


  

 

 

 

 


사용빈도 높은 Annotations

1. Spring 애노테이션
   - @Component, @Service, @Repository: 스프링의 빈으로 등록.
   - @Autowired: 의존성 주입.
   - @Controller, @RestController: 스프링 MVC 컨트롤러.
   - @RequestMapping, @GetMapping, @PostMapping: 요청 매핑.

2. JUnit 애노테이션
   - @Test: 테스트 메서드로 지정.
   - @Before, @After: 테스트 전후에 실행될 메서드.
   - @BeforeClass, @AfterClass: 클래스 단위의 테스트 전후에 실행될 메서드.

 

반응형

'정보처리,전산 > springboot' 카테고리의 다른 글

@RequestParam  (0) 2024.09.15
@RequestMapping  (0) 2024.09.15
Gradle 의존성 추가 키워드  (0) 2024.06.27
jetbrains IntelliJ HotKey  (0) 2024.06.21
GRADLE , MAVEN  (0) 2024.06.21