Spring⽇常笔记记录14--后置通知@AfterReturning 在⽬标⽅法执⾏之后执⾏。
由于是⽬标⽅法之后执⾏,所以可以获取到⽬标⽅法的返回值。
该注解的 returning 属性就是⽤于指定接收⽅法返回值的变量名的。
所以,被注解为后置通知的⽅法,除了可以包含 JoinPoint 参数外,还可以包含⽤于接收返回值的变量。
该变量最好为 Object 类型,因为⽬标⽅法的返回值可能是任何类型。
1.增加接⼝⽅法:
2.接⼝实现类:
3.定义切⾯:
ample.ba02;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import java.util.Date;
/**
* @Aspect:是aspectj框架中的注解。
* 作⽤:表⽰当前类是切⾯类。
* 切⾯类:是⽤来给业务⽅法增加功能的类,在这个类中有切⾯的功能代码
* 使⽤位置:在类定义的上⾯
*/
@Aspect
public class MyAspect {
/
**
* 后置通知定义⽅法,⽅法是实现切⾯功能的
* ⽅法的定义要求:
* 1.公共⽅法public
* 2.⽅法没有返回值
* 3.⽅法名称⾃定义
* 4.⽅法有参数,推荐是Object,参数名⾃定义
*/
/**
* @AfterReturning:后置通知
* 属性:1.value 切⼊点表达式
* 2.returning ⾃定义的变量,表⽰⽬标⽅法的返回值的
* ⾃定义变量名必须和通知⽅法的形参名⼀样。
* 位置:在⽅法定义的上⾯
* 特点:
* 1.在⽬标⽅法之后执⾏的
* 2.能够获取到⽬标⽅法的返回值,可以根据这个返回值做不同的处理功能
* Object res = doOther();
* 3.可以修改这个返回值
*
* 后置通知的执⾏
* Object res = doOther();
* myAfterReturning(res);
*/
@AfterReturning(value = "execution(* *..SomeServiceImpl.doOther(..))",
returning = "res")
public void myAfterReturning(Object res){
//Object res : 是⽬标⽅法执⾏后的返回值,根据返回值做切⾯的功能处理
System.out.println("后置通知:在⽬标⽅法之后执⾏的,获取的返回值是:"+res); }
}
4.编写测试类:
5.运⾏结果:
spring framework documentation
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论