DescriptorKey

DescriptorKey (Descriptor 필드 매핑 메타-애너테이션)

애너테이션 요소가 Descriptor의 어떤 필드와 대응하는지 설명하는 메타-애너테이션이에요. MBean이나 그 속성·연산·생성자·파라미터의 Descriptor 필드를 채우는 데 사용돼요.

출처: Java API Reference

본문

예를 들어 다음과 같은 애너테이션을 정의했다고 해요:

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Units {
    @DescriptorKey("units")
    String value();
}

그리고 이렇게 사용하면:

public interface CacheControlMBean {
    @Units("bytes")
    public long getCacheSize();
}

CacheControlMBean으로 Standard MBean을 만들면 일반 규칙상 CacheSize라는 long 타입 속성이 생기는데, @Units 애너테이션 덕분에 이 속성의 MBeanAttributeInfo 기술자에 units라는 이름의 값 bytes를 가진 필드가 추가돼요.

@DescriptorKey는 다음과 같은 곳에 적용할 수 있어요: Standard MBean 또는 MXBean 인터페이스, 그 인터페이스의 메서드, 메서드 중 연산(attribute의 getter/setter가 아닌)에 해당하는 메서드의 파라미터, Standard MBean/MXBean을 구현하는 클래스의 public 생성자, 그리고 그 생성자의 파라미터. 그 외의 사용은 무시돼요.

같은 프로그램 요소의 서로 다른 애너테이션이 동일한 Descriptor 필드에 서로 다른 값을 정의하면 안 되고, getter 메서드의 애너테이션 필드와 setter 메서드의 필드도 서로 일관되어야 해요. Java 1.6부터 제공돼요.

더 알아보기 (Learn more)

Java 공식 API