9、前置、后置、环绕通知
来源:互联网 发布:深信服上网行为 js脚本 编辑:程序博客网 时间:2024/05/22 02:04
前置通知
使用@Before
第一种方法:先定义pointcut
@Pointcut("execution(* com..*.sleep(..))")public void callSleep(){}@Before(value="callSleep()")public void beforeSleep(JoinPoint joinPoint){ System.out.println("before sleep");}
第二种方法将pointcut写在@Before
中
@Before("within(com.codestd.springstudy.aop.People)")public void beforeSleep(JoinPoint joinPoint){ System.out.println("before sleep");}@Before("execution(* com..*.sleep(..))")public void beforeSleep(JoinPoint joinPoint){ System.out.println("before sleep");}
后置通知
@After(value = "callSleep()")public void afterSleep(){ System.out.println("after sleep");}---@After("execution(* com..*.sleep(..))")public void beforeSleep(JoinPoint joinPoint){ System.out.println("before sleep");}
获取目标对象
在前置通知和后置通知中可以将JoinPoint
作为方法的参数传入通知方法(如上)。
joinPoint.getTarget() //获取目标对象joinPoint.getArgs() //获取连接点方法运行时的入参列表joinPoint.getSignature() //获取连接点的方法签名对象joinPoint.getThis() //获取代理对象本身
环绕通知
通知优先级如下环绕通知-->前置通知-->后置通知-->环绕通知
//@Around("execution(* com..*.sleep(..))")@Around(value = "callSleep()")public Object afterSleep(ProceedingJoinPoint joinPoint) throws Throwable{ // start stopwatch Object retVal = joinPoint.proceed(); // stop stopwatch return retVal;}
在环绕通知中使用ProceedingJoinPoint
获取连接点信息,需要在环绕通知调用连接点的proceed()
方法手动执行方法,并且将方法的返回值作为通知方法的返回值返回。
ProceedingJoinPoint继承JoinPoint子接口,它新增了两个用于执行连接点方法的方法:
- java.lang.Object proceed() throws java.lang.Throwable:通过反射执行目标对象的连接点处的方法;
- java.lang.Object proceed(java.lang.Object[] args) throws java.lang.Throwable:通过反射执行目标对象连接点处的方法,不过使用新的入参替换原来的入参。
0 0
- 9、前置、后置、环绕通知
- spring_AOP前置通知&后置通知&返回通知&环绕通知
- spring的前置通知,后置通知,环绕通知
- Spring框架——AOP前置、后置、环绕、异常通知
- Spring_17-19前置通知&后置通知&返回通知&异常通知&环绕通知
- Spring3.0中的前置通知、后置通知、环绕通知、异常通知
- Spring3.0中的前置通知、后置通知、环绕通知、异常通知
- SpringAOP 前置、后置、环绕增强
- Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理
- AOP的一些东西(事务的传播特性,前置,后置,环绕,异常 等各种通知)
- springaop术语概述及aop中常见通知的实现(前置,后置,环绕,异常)
- Aop的日志操作(前置,后置,环绕,返回,异常通知)
- Spring AOP 面向切面编程 常见通知实现(前置,后置,环绕,异常)
- 前置,后置,环绕,异常增强(示例)
- Spring-------- 增强(前置,后置,异常,环绕)
- spring中前置通知与后置通知
- Spring AOP前置通知和后置通知
- Spring前置通知与后置通知
- javascript 关于“类”
- 2>&1 的用法说明
- 8、AOP切入点详解
- N^N的第一位数
- 实用知识:第三方储存(LeanCloud)
- 9、前置、后置、环绕通知
- sublime 快捷键
- 蓝桥杯 历届试题 高僧斗法
- SVM算法的生动讲解
- 10、返回通知、异常通知
- 第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
- java.lang.Integer的面试陷阱
- 实验:C++实验6-项目1
- Spring Aop源码分析