ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AnnotatedTypeMetadata - 어노테이션 정보 추출
    Spring/Framework 2024. 3. 25. 10:46

    org.springframework.core.type.AnnotatedTypeMetadata 인터페이스

    개요

    org.springframework.core.type.AnnotatedTypeMetadata 인터페이스는 주어진 클래스에 대한 애노테이션 정보를 추출하는 데 사용됩니다. 이 인터페이스는 다음과 같은 기능을 제공합니다.

    • 애노테이션 유무 확인: 특정 애노테이션이 클래스에 존재하는지 확인합니다.
    • 애노테이션 속성 추출: 애노테이션의 속성 값을 가져옵니다.
    • 메타데이터 추출: 클래스 이름, 인터페이스, 상속 관계 등의 메타데이터를 추출합니다.

    핵심 기능

    • isAnnotated(String annotationName): 특정 애노테이션이 존재하는지 확인합니다.
    • getAnnotationAttributes(String annotationName): 애노테이션의 속성 값을 Map 형태로 가져옵니다.
    • getAnnotationTypes(): 클래스에 존재하는 모든 애노테이션의 이름을 가져옵니다.
    • getClassName(): 클래스의 이름을 가져옵니다.
    • getInterfaces(): 클래스가 구현하는 인터페이스 목록을 가져옵니다.
    • getSuperClassName(): 클래스의 상위 클래스 이름을 가져옵니다.

    사용 방법

    1. AnnotatedTypeMetadata 인터페이스를 구현하는 클래스를 사용합니다.
    2. isAnnotated(), getAnnotationAttributes(), getAnnotationTypes() 등의 메소드를 사용하여 애노테이션 정보를 추출합니다.

    예제 코드

    Java
    @Component
    public class MyComponent {
    
    }
    
    public class Example {
    
        public static void main(String[] args) {
            AnnotatedTypeMetadata metadata = AnnotatedTypeMetadata.introspect(MyComponent.class);
    
            // @Component 애노테이션 존재 여부 확인
            if (metadata.isAnnotated(Component.class.getName())) {
                System.out.println("MyComponent는 @Component 애노테이션을 가지고 있습니다.");
            }
    
            // @Component 애노테이션 속성 추출
            Map<String, Object> attributes = metadata.getAnnotationAttributes(Component.class.getName());
            System.out.println("value 속성: " + attributes.get("value"));
    
            // 클래스 이름 출력
            System.out.println("클래스 이름: " + metadata.getClassName());
        }
    }
    
    코드를 사용할 때는 주의가 필요합니다.
    content_copy

    출력 결과

    MyComponent는 @Component 애노테이션을 가지고 있습니다.
    value 속성: myComponent
    클래스 이름: com.example.MyComponent
    

    참고 자료

    추가 정보

    • AnnotatedTypeMetadata 인터페이스는 프록시 클래스를 처리할 때 유용합니다.
    • ClassUtils 클래스는 AnnotatedTypeMetadata 인스턴스를 생성하는 데 사용할 수 있습니다.

    댓글

Designed by Tistory.