博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring-aop(二)
阅读量:6166 次
发布时间:2019-06-21

本文共 1162 字,大约阅读时间需要 3 分钟。

hot3.png

@Pointcut:定义切点

如:

@Pointcut("execution(* spider.ungeturl.*(..))")

则该切点会拦截在包spider下的类ungeturl中所有的方法

@Before:前advice

@Before("pointcut()")

该声明的意思是这个advice会在切点pointcut()拦截的方法执行前执行

@Afterthrowing:抛出异常advice

@Afterthrowing(pointcut="pointcut()",throwing="ret")public void ex(Object ret)

这个advice会在抛出异常后执行,并将抛出的异常传给advice。这里throwing的值要对应于advice中的某个参数名,这样这个值才能被传给advice

@Around:可以理解成环绕advice吧

@Around("pointcut()")public Object deal(ProceedingJoinPoint pjp,...)

around要注意的一点就是,其advice的形参列表必须以ProceedingJoinPoint开始。这个类可以看做是当前的Join Point,其下有很多有用的方法,可以获取当前Join Point的许多有关数据。

获取Join Point的传入参数:

@After("logPointCut() && args(stream,url,fileName)")	public void addLog(InputStream stream,String url,int fileName)

改变Join Point的返回值:

@Around("anyMethod()")	public Object addLog(ProceedingJoinPoint j)throws Throwable{		System.out.println("----in addLog method----");		System.out.println("===checkSecurity==="+j.getSignature().getName());				System.out.println("===change the return arg values===");		Object object = j.proceed();		object = "Jessica 1989-03-14";		return object;

这里最好建议在IDE下开发,因为IDE特有的提示功能可以对不熟悉的类进行提示,帮助人迅速上手

转载于:https://my.oschina.net/shadowalker1990/blog/203050

你可能感兴趣的文章
Linux下的内核测试工具——perf使用简介
查看>>
《从问题到程序:用Python学编程和计算》——2.3 内置函数和数学函数包
查看>>
《Photoshop修饰与合成专业技法》目录—导读
查看>>
《Metasploit渗透测试手册》—第1章1.10节分析数据库中存储的渗透测试结果
查看>>
《Adobe Acrobat XI经典教程》—第2课减小文件大小
查看>>
《数据库技术原理与应用教程》一第2章 数据库的基础知识
查看>>
QuaggaJS —— 纯 JavaScript 开发的条形码扫描
查看>>
在图片中加入噪点就能骗过 Google 最顶尖的图像识别 AI
查看>>
免费下载!业界首部安卓热修复宝典出炉,阿里技术大牛联袂推荐
查看>>
OpenID 关联认证提供 CoreOS dex
查看>>
《Node.js区块链开发》一2.2 信用,决定着利益转移的方向
查看>>
Speedy:来自京东的 Docker 镜像存储系统
查看>>
《动手玩转Arduino》——11.2 众多的Arduino板
查看>>
IBM Watson 进入癌症基因组分析市场
查看>>
在 Linux 中查看你的时区
查看>>
Linux集群和自动化维1.6 小结
查看>>
《OpenACC并行编程实战》—— 第1章 并行编程概览 1.1 加速器产品
查看>>
C语言OJ项目参考(2417) 字符串长度
查看>>
ajax的手写、封装和自定义设置
查看>>
class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist
查看>>