[英]Java custom annotation
我想在方法上寫自定義注釋。我的用例是-我有一個具有角色的用戶,因此當用戶嘗試訪問某個類的方法時,我想檢查他的角色。 所以我想傳遞注釋中的角色。
我的代碼在這里com.samples包中;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Roles {
public String roles();
}
package com.samples;
public class AnnotationExample {
@Roles(roles="admin")
public void createAction(){
String userrole = "admin"; // this hardcoded value
// a
// here i want to compare annotaiton value with user role
}
}
我怎樣才能做到這一點 ? 可以將注釋值聲明為對象值。 像@Roles(Role.AADMIN)
要檢查注釋,您需要使用反射。
Roles r = AnnotationExample.class.getMethod("createAction").getAnnotation(Roles.class);
if ("admin".equals(r.roles())) //has admin roles
可以將注釋值聲明為對象值。 像@Roles(Role.AADMIN)
我想您想要的是一個枚舉。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Roles {
public Role roles();
}
enum Role { ADMIN, USER };
public class AnnotationExample {
@Roles(roles=Role.ADMIN)
public void createAction(){
Role userrole = Role.ADMIN;
}
}
如果您確實需要重新設計安全性注釋(如果您不想使用具有聲明性安全性的現有選項,例如EJB或Spring),那么您可能至少想看看它們是如何實現的。 這里以EJB實現之一為例。
但是也許您會重新考慮?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.