Java EE: привязать некоторые аннотации перехватчика к одному - PullRequest
2 голосов
/ 29 июля 2011

Прежде всего: я хочу использовать Java EE, а не Spring!У меня есть некоторые собственные аннотации, которые действуют как привязки перехватчиков.Я использую аннотации к своим методам, например так:

@Logged
@Secured
@RequestParsed
@ResultHandled
public void doSomething() {
   // ...
}

Для некоторых методов я хочу использовать одну из этих аннотаций, но большинство методов я хочу использовать так:

@FunctionMethod
public void doSomething() {
   // ...
}

Могу ли я связать этот набор аннотаций в одну?Я не могу написать код в одном перехватчике, потому что для некоторых методов я хочу использовать их также отдельно.

Я знаю, что возможно определение @Stereotype, но, насколько я знаю, это используется для определенияцелый класс, ни один метод.

Ответы [ 2 ]

0 голосов
/ 01 августа 2011

С помощью какой-то известной поисковой системы я нашел решение в документации JBoss Weld (глава 9.6 Привязка перехватчика с наследованием)

Я могу использовать интерфейс привязки перехватчика, который наследуется от других привязок перехватчика. Это будет выглядеть так:

@InterceptorBinding
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Logged
@Secured
@RequestParsed
@ResultHandled
public @interface FunctionMethod {
  // clean and empty
}

Теперь я могу использовать новую привязку перехватчика для метода bean, и все перехватчики будут называться:

@FunctionMethod
public void doSomething() {
   // ...
}
0 голосов
/ 29 июля 2011

Я бы сказал, что вы на правильном проходе со стереотипом.

Правильно, что найденные примеры, а также официальное руководство по Java EE 6 используют его только для класса в качестве примера (например, @Model), но вы также можете объявить @TYPE (MEHOD) в своей пользовательской аннотации и тогда я предполагаю, что это работает.

...