mam adnotację:Jak obsługiwać atrybuty wiązania kolektora
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface Example {
}
oraz klasę przechwytywania do jego użytkowania:
@Interceptor
@Example
public class ExampleInterceptor implements Serializable {
...
}
Chciałbym dodać tekst parametru:
public @interface Example {
String text();
}
Ale nie wiem, jak obsługiwać parametr w klasie przechwytywania. Jak zmodyfikować adnotację klasy?
@Interceptor
@Example(text=???????)
public class ExampleInterceptor implements Serializable {
...
}
Jeśli piszę @Example(text="my text")
, przechwytujący nazywa się właśnie wtedy, gdy metoda/klasy jest opatrzone @Example(text="my text")
. Ale chcę, aby przechwytywacz był nazywany niezależnie od wartości parametru - @Example(text="other text")
.
A jak uzyskać wartość parametru? Czy muszę używać reflexion, czy jest lepszy sposób?
Aby uzyskać wartość adnotacji na przechwyconej metodzie w przechwytywaczu: InvocationContext ctx; Przykładowy przykład = ctx.getMethod(). GetAnnotation (Example.class); Wartość ciągu = przykład.value(); – dbricman
Co się stanie, jeśli nie chcę dodawać domyślnej metody wymuszania wszystkich zastosowań adnotacji w celu określenia wartości? W moim przypadku jest to wartość wyliczeniowa zamiast łańcucha, więc nie ma sensu umieszczać @ Example (MyEnum.SPECIFIC_VALUE) na klasie przechwytującej. – Mano