java aop注解拦截_Spring AOP 拦截指定注解标识的类或方法

代码Demo

@Aspect

@Component

@Order(10)

public class BidAuthorityProxy {

/**

* 扫描指定包下的类中使用@EnableRoleAuthority注解修饰的类

*/

@Around("@within(com.core.annotation.EnableRoleAuthority) && within(com.bid..*)")

public Object verifyRoleExecuteCommand(ProceedingJoinPoint pjp) throws Throwable {

// 获取当前拦截方法的对象

MethodSignature msig = (MethodSignature) pjp.getSignature();

Method targetMethod = pjp.getTarget().getClass().getDeclaredMethod(msig.getName(), msig.getMethod().getParameterTypes());

// 获取当前方法注解中的值

VerifyRoleAuthority annotation = targetMethod.getAnnotation(VerifyRoleAuthority.class);

// 如果类上面没有注解,则获取接口上此方法的注解

if (annotation == null) {

Class>[] inters = pjp.getTarget().getClass().getInterfaces();

for (Class> inter : inters) {

Method targetInterMethod = inter.getDeclaredMethod(msig.getName(), msig.getMethod().getParameterTypes());

annotation = targetInterMethod.getAnnotation(VerifyRoleAuthority.class);

if (annotation != null) {

break;

}

}

}

// 获取到注解中的值后进行后续自定义逻辑操作

return pjp.proceed();// 执行方法

}

}

相关说明:

AOP中扫描指定注解相关说明

(1)@annotation:用来拦截所有被某个注解修饰的方法

(2)@within:用来拦截所有被某个注解修饰的类

(3)within:用来指定扫描的包的范围

0838f5f1242f88af75cd184d8915fa39.png

e1089cbef1b3fe9d76f1d8e0af658b17.png

曾梦想仗剑走天涯XX

发布了19 篇原创文章 · 获赞 24 · 访问量 7万+

私信

关注

标签:Spring,within,VerifyRoleAuthority,annotation,AOP,注解,msig,pjp

来源: https://blog.csdn.net/java_faep/article/details/104005399

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php的文件包含总结 include require include_once require_once

文件包含相当于将另一个文件的代码全部复制到另一个文件中,然后执行。包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。比如说我们在浏览csdn很多页面中,基本都是看到下面的内容,为了不要每次都要写…

php终止脚本执行(exit、die、return)

终止php的脚本执行&#xff0c;我们可以使用exit&#xff0c;die&#xff0c;return 0x01 exit和die&#xff0c; 当程序运行到他们时&#xff0c;直接退出程序&#xff0c;不在运行 <?phpheader(content-type:text/html;charsetutf-8);echo 使用exit前;echo <br>…

php的延时sleep函数

语法&#xff1a;sleep&#xff08;秒数&#xff09; <?phpheader(content-type:text/html;charsetutf-8);sleep&#xff08;5&#xff09;;echo 我的名字是DL_one; ?>输出时可以发现要等待一段时间才能输出 sleep函数在代码测试时很有用

PHP的foeach用法

PHP 4 引入了 foreach 结构&#xff0c;用foreach可以帮助我们简单遍历数组&#xff0c;foreach 仅能用于数组&#xff0c;当用于其它数据类型或者一个未初始化的变量时会产生错误。 其用法为&#xff1a; foreach(数组 as 键 > 值){//循环体}当数组只有值&#xff0c;没有…

不为事务而事务

背景&#xff1a; 最近在做一个项目&#xff0c;需要用到两个第三方组件&#xff1a;北京莲塘语音组件和CMailSever前者作为语音聊天室的二次开发组件&#xff0c;后者用于网站的小型邮件系统二次开发组件 需求&#xff1a; 用户在主程序登陆后&#xff0c;无须再次登陆…

bugzilla学习

October 03, 2003 bugzilla学习 Bugzilla是一个bug追踪系统&#xff0c;用以管理bug提交、bug消除&#xff0c;不仅能降低同样错误的重复发生&#xff0c;提高开效率&#xff0c;而且有助于项目管理的难度。更有人打算用借助此系统&#xff0c;用前人的bug来教育新来的程序员&a…

php的list函数

作用&#xff1a;把索引数组中的值赋给一组变量&#xff0c;像 array() 一样&#xff0c;这不是真正的函数&#xff0c;而是语言结构。 list() 可以在单次操作内就为一组变量赋值。 <?phpheader(content-type:text/html;charsetutf-8);$personarray(DL_one,18,man);list($…

我也终于有被认为是高手的时候了,^_^

昨天&#xff0c;马超打电话&#xff0c;让我回去给老同事讲安装的制作过程&#xff0c;说什么——他们不会。 汗......心想&#xff0c;当初谁教我啊?!还不都是自己学习摸索的&#xff0c;可现如今人家话说到这儿&#xff0c;也不好硬搪塞掉&#xff0c;去就去呗&…

php的range函数

range() 函数用于创建一个包含指定范围的元素的数组。 语法&#xff1a; range(low,high,step) “”“ low:起始值 high&#xff1a;最大值 step&#xff1a;步长&#xff0c;可写可不写&#xff0c;默认为1 ”“”<?phpheader(content-type:text/html;charsetutf-8);$arr…

php常量变量连接,PHP常量及变量区别原理详解

常量&#xff1a;用于储存一个不会变化也不希望变化的数据的标示符(命名规则与变量相同)定义形式&#xff1a;使用 define() 函数定义使用形式&#xff1a;define(“常量名” &#xff0c;常量值)使用 counst 语法定义使用形式&#xff1a;counst 常量名 常量值使用常量&#…

字符串最长回文子串_最长回文子串

字符串最长回文子串Problem statement: 问题陈述&#xff1a; Given a string str, find the longest palindromic substring. A substring need to be consecutive such that for any xixj i<j must be valid in the parent string too. Like "incl" is a subst…

一个人在办公室的日子

同我一起工作的那个大学同学兼同事ALICE因为个人原因,最近请假了一个星期.剩下了孤单的我在公司应付日常英文翻译书写工作。的确有点闷&#xff0c;的确有些不习惯&#xff0c;点讲&#xff0c;习惯了两个人一起吃饭聊天&#xff0c;一起拼命赶稿子&#xff0c;一起饭后散步&am…

php的array_merge函数

array_merge函数用于把一个或多个数组合并为一个数组 语法&#xff1a; array_merge(array1,array2,array3...)<?phpheader(content-type:text/html;charsetutf-8);$a1array("a">"red","b">"green");$a2array("c"…

dlf packet_DLF的完整形式是什么?

dlf packetDLF&#xff1a;德里土地和金融 (DLF: Delhi Land and Finance) DLF is an abbreviation of Delhi Land and Finance. Delhi Land and Finance is one of the leading commercial real estate developers in India. In 1946, the company was established by Chaudha…

python求三个数中最小(大)的元素

求最小&#xff1a; def getThreeNumberMin(x,y,z):minx if x<y else yminmin if min<z else zreturn min agetThreeNumberMin(3,-1,-1) print(a)结果&#xff1a; 求最大&#xff1a; def getThreeNumberMin(x,y,z):maxx if x>y else ymaxmax if max>z else zr…

java内存分配空间大小,JVM内存模型及内存分配过程

一、JVM内存模型JVM主要管理两种类型内存&#xff1a;堆(Heap)和非堆(Permanent区域)。1、Heap是运行时数据区域&#xff0c;所有类实例和数组的内存均从此处分配。Heap区分两大块&#xff0c;一块是 Young Generation&#xff0c;另一块是Old Generation&#xff1a;1)在Young…

python自动翻译pdf_在Python中自动执行PDF

python自动翻译pdfModules used: 使用的模块&#xff1a; In this script, we will use PyPDF2 module which will provide us various functions such as to extract the data and read the pdf file and split the file and write a new file. 在此脚本中&#xff0c;我们将…

设置DVWA出现Could not connect to the MySQL service. Please check the config的解决方法,默认登录账号

按照这个路径&#xff0c;找到config.inc.php文件&#xff0c;打开 找到下面三个语句 db_server:一般填127.0.0.1&#xff0c;如果修改了mysql的端口号&#xff0c;要在后面加上修改后的端口号&#xff0c;默认为3306 db_user:自己mysql数据库的用户名 db_password&#xff1…

关于用户角色权限的一点想法(1) 选择自 biggie 的 Blog

原文&#xff08;http://dev.csdn.net/article/19/19751.shtm&#xff09; 前言&#xff1a;权限往往是一个极其复杂的问题&#xff0c;但也可简单表述为这样的逻辑表达式&#xff1a;判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。针对不同的应用&#xff0c;需…

使用anconada 的conda更换环境

打开命令行界面。cmd&#xff0c;直接打开 查看有些环境 conda env list 我这里有两个环境使用指定的环境 我这里就用py27 命令&#xff1a;activate环境名 py27在前面&#xff0c;已经成功更换了退出使用某个环境 conda deactivate 前面已经没有py27&#xff0c;表示已经退…