Lets sagen, ich habe einfach AnmerkungWie für den Zugriff auf Annotation Variablen von Interceptor
@InterceptorBinding
@Retention(RUNTIME) @Target({TYPE, METHOD})
public @interface CheckUserRole {
@Nonbinding String[] allowedRoles() default "";
}
Als nächstes ich Abfangjäger wie folgt definiert sind:
@Interceptor
@CheckUserRole
public class CheckUserRoleInterceptor
Wie kann ich allowedRoles
von Annotation zugreifen? Ich mache es so:
CheckUserRole checkUserRoleAnnotation = ctx.getMethod().getAnnotation(CheckUserRole.class);
if(checkUserRoleAnnotation != null){
String[] allowedRoles = checkUserRoleAnnotation.allowedRoles();
}
Aber das funktioniert nur, wenn ich Annotation auf Methode in meiner Klasse verwenden. Wenn ich meine Annotation für die ganze Klasse verwenden möchte, ist checkUserRoleAnnotation
null
, da meine Methode nicht im Code mit Annotationen versehen ist.
Wie kann ich auf diese Variablen zugreifen, wenn die ganze Klasse annotiert ist?
Sie können es in einer Klasse zuzugreifen, die die Anmerkung ist der Umgang mit nicht in der Klasse, in die Sie die Anmerkung selbst einfügen. @Constraint (validatedBy = Validator.class) -> In der Datei Validator.java können Sie auf die Mitglieder der Annotation zugreifen. – Stultuske
Ich meine, ich möchte auf den Interceptor zugreifen. Vielleicht habe ich es nicht gut erklärt. Ich habe die Klassen 'ExampleClass' und' void exampleMethod() 'in dieser Klasse. Wenn ich 'exampleMethod()' annotiere, kann ich auf Variable im Interceptor zugreifen (wie oben beschrieben), aber wenn ich 'ExampleClass' damit annotiere, sollten alle Methoden mit Anmerkungen versehen werden, aber es gibt 'null' zurück. – deem
ja, das habe ich. Was hindert Sie daran, @Constraint (validatedBy = CheckUserRoleInterceptor.class) zu Ihrer Annotation hinzuzufügen? – Stultuske