que tienen una anotación:Cómo manejar atributos de enlace de interceptor
@Inherited
@InterceptorBinding
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface Example {
}
y una clase interceptor para su manejo:
@Interceptor
@Example
public class ExampleInterceptor implements Serializable {
...
}
me gustaría añadir un texto de parámetro:
public @interface Example {
String text();
}
Pero no sé cómo manejar el parámetro en la clase de interceptor. ¿Cómo modificar la anotación de la clase?
@Interceptor
@Example(text=???????)
public class ExampleInterceptor implements Serializable {
...
}
Si escribo @Example(text="my text")
, el interceptor se llama justo cuando un método/clase se anota con @Example(text="my text")
. Pero quiero que el interceptor se llame independientemente en un valor de parámetro - @Example(text="other text")
.
¿Y cómo obtener el valor del parámetro? ¿Tengo que usar la reflexión o hay una mejor manera?
Para obtener el valor de la anotación en el método interceptado en el interceptor: InvocationContext ctx; Ejemplo example = ctx.getMethod(). GetAnnotation (Example.class); Valor de cadena = example.value(); – dbricman
¿Qué sucede si no deseo agregar un método predeterminado para forzar todos los usos de la anotación para especificar un valor? En mi caso, es un valor enum en lugar de una cadena, por lo que tiene poco sentido poner @Example (MyEnum.SPECIFIC_VALUE) en la clase de interceptor. – Mano