AOP拦截使用自定义注解时Class.getAnnotation为null

在Spring AOP中,如果使用CGLIB代理,原方法或类上的自定义注解无法通过Class.getAnnotation直接获取,因为代理类不包含父类的注解。解决方案是通过反射从类及其父类中查找注解,利用Annotation提供的工具方法,可以从类和父类分别获取注解,从而解决注解获取为null的问题。
摘要由CSDN通过智能技术生成

执行的方法或者类有自定义注解,但是通过clazz.getAnnotation取值为null

UnAuthRequest annotation = clazz.getAnnotation(UnAuthRequest.class);

原因是Spring AOP使用CGLIB生成的代理是不会加上父类的方法上的注解的
所以试着获取了一下super

UnAuthRequest annotation = clazz.getSuperclass().getAnnotation(UnAuthRequest.class);

果然拿到了自定义的注解,Annotation有一个工具类,可以比较方便的从类中拿到Annotation
这样用:

AnnotationUtils.findAnnotation(clazz, UnAuthRequest.class)

这个方法的源码先从类中获取,再从父类中获取


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值