Передача свойств аннотации в мета-аннотации

Допустим, у меня есть аннотация со свойством:

@Named(name = "Steve")
private Person person

и я хочу создать составную аннотацию с несколькими мета-аннотациями, включая ту, которая принимает свойство

@Named
@AnotherAnnotation
@YetAnotherAnnotation
public @interface CompoundAnnotation {

   ...
}

Есть ли способ передать свойства составной аннотации одной из метааннотаций?

Например, что-то вроде этого :

@CompoundAnnotation(name = "Bob")
private Person person;

, что эквивалентно, но намного удобнее, чем

@Named(name = "Bob")
@AnotherAnnotation
@YetAnotherAnnotation
private Person person;

Спасибо!

PS извиняюсь за неудачный выбор примера аннотации. -Я не имел в виду аннотацию javax.inject.@Named, а просто какую-то произвольную аннотацию со свойствами.


Спасибо всем за ваши ответы/комментарии.

Очевидно, что это невозможно. Однако так получилось, что для моего случая-в-пункте есть простой обходной путь-, которым я поделюсь, если он кому-то поможет:

Я работаю с Spring и хочу создать свой собственный Аннотации, которые имеют @Component в качестве мета-аннотации, поэтому автоматически обнаруживаются при сканировании компонентов. Однако я также хотел иметь возможность установить свойство BeanName (, соответствующее свойству value в @Component), чтобы иметь собственные имена компонентов.

Оказывается, предусмотрительные ребята из Spring сделали возможным сделать именно так, -AnnotationBeanNameGenerator будет принимать свойство 'value' любой переданной аннотации и использовать его в качестве имени компонента (и конечно, по умолчанию он будет получать только переданные аннотации, которые являются @Component или имеют @Component в качестве мета-аннотаций). Оглядываясь назад, это должно было быть очевидным для меня с самого начала -вот как существующие аннотации с @Component в качестве мета-аннотации, такие как @Service и @Registry,может предоставить имена bean-компонентов.

Надеюсь, кому-то это будет полезно. Я все еще думаю, что это позор, что это невозможно в более общем плане!

29
задан Tom McIntyre 10 April 2012 в 13:18
поделиться