DescriptorKey
DescriptorKey (Descriptor 필드 매핑 메타-애너테이션)
애너테이션 요소가 Descriptor의 어떤 필드와 대응하는지 설명하는 메타-애너테이션이에요. MBean이나 그 속성·연산·생성자·파라미터의 Descriptor 필드를 채우는 데 사용돼요.
본문
예를 들어 다음과 같은 애너테이션을 정의했다고 해요:
@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부터 제공돼요.