JAVA-Spring注解实现AOP权限拦截,如何取得方法上自定义Annotation的值呢?

比如说我在一个要拦截的方法上定义了一段自定义的Annotation@getView(Method="aa",Value="bb")publicStringgetName(... 比如说我在一个要拦截的方法上定义了一段自定义的Annotation

@getView(Method="aa",Value="bb")
public String getName(){
return "XXX";
}
现在我想在AOP的环绕通知时取得@getView(Method="aa",Value="bb") 的aa和bb应该怎么获取?
展开
 我来答
百度网友5195152
推荐于2018-02-28 · TA获得超过1164个赞
知道大有可为答主
回答量:1314
采纳率:0%
帮助的人:709万
展开全部
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

@Retention(RetentionPolicy.RUNTIME)
@interface GetView {

String Method();

String Value();

}

public class Temp {

@GetView(Method = "aa", Value = "bb")
public void test() {
System.out.println("In test method.");
}

public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, SecurityException, NoSuchMethodException {

Temp temp = new Temp();
Method method = temp.getClass().getMethod("test");
System.out.println(method.isAnnotationPresent(GetView.class));
method.invoke(temp);
GetView view = method.getAnnotation(GetView.class);
System.out.println(view.Method());
System.out.println(view.Value());
}

}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
459402930
2018-02-27 · TA获得超过444个赞
知道小有建树答主
回答量:292
采纳率:83%
帮助的人:179万
展开全部
你应该可以获取到 Method 对象,这个代表你拦截到的 方法 method.getAnnotation(getView.class); 你就可以获取到 对应的注解对象,然后通过注解对象,获取注解里面对应的属性值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhongtyler
推荐于2016-02-17 · TA获得超过4408个赞
知道大有可为答主
回答量:4384
采纳率:79%
帮助的人:917万
展开全部
主要问题在于不同的Annotation的拦截是不同的。 例如method级别的拦截。我们可以通过getMethodAnnotation(Class)的获取annotation。如果没有设置annotation,获取为空。
举个例子:
// 这里判断是否拦截方法
if(!(handler instanceof HandlerMethod)){
return true;
}
HandlerMethod method = (HandlerMethod)handler;
//这里获取了一个Menu的annotation。
Menu sm = method.getMethodAnnotation(Menu.class);

if(sm!=null){ //如果确实设置了Menu的annotation,就会进入此区域。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式