行业动态

Spring注解之AOP功能测试

  概念

  1.连接点

  可以被增强的方法。

  2.切入点

  实际被增强的方法。

  3.通知(增强)

  实际增强的部分, 比如加的日志。

  4.切面 (是动作)

  把通知应用到切入点过程。

Spring注解之AOP功能测试

  通知类型

  · 前置通知@Before

  · 后置通知@After 方法执行之后(有没有异常都执行)

  · 环绕通知@Around 方法之前之后都有, 方法里有参数(ProceedJoinpoint 表示要增强的方法)

  · 异常通知@AfterThrowing 异常才执行

  最终通知@AfterReturning 返回值之后执行(有异常不执行了)。

  步骤

  要求:

  有一个普通类, 有一个切面类(带@Aspect注解),都要加入容器中。

  开启切面功能@EnableAspectJAutoProxy;

  普通类:

  @Controller

  @ComponentScan("com.alex.aop1")

  @EnableAspectJAutoProxy // 开启切面功能

  public class MathCalculator {

  public int div(int i, int j) {

  return i/j;

  }

  }

  切面类:

  @Aspect

  @Controller

  public class LogAspects {

  // 切入点表达式写法

  @Pointcut("execution(public * com.alex.aop1.MathCalculator.*(..))")

  private void pointCut() {}

  // @Before切入

  @Before("pointCut()")//切入点表达式

  public void logStart() {

  System.out.println("除法运行...参数运行列表时: {}");

  }

  @After("pointCut()")

  public void logEnd() {

  System.out.println("除法...结束: ");

  }

  @AfterReturning("pointCut()")

  public void logReturn() {

  System.out.println("除法...返回: {}");

  }

  @AfterThrowing("pointCut()")

  public void logException() {

  System.out.println("除法...异常: {}");

  }

  }

  解释: pointCut方法, 抽取出来的切入点表达式, 可以在不同的通知处使用。

  返回值/异常/方法信息

  打印参数名和参数值

  如果希望获取到函数的参数, 签名等, 就需要代入JoinPoint joinPoint作为方法参数。

  打印返回值。

  步骤:

  1.returning = "result" 设定一个变量名result;

  2.Object result 方法签名传入result;

  3.方法体里就可以拿到返回值了。

  @AfterReturning(value = "pointCut()", returning = "result")

  public void logReturn(Object result) {

  System.out.println("除法...返回: {"+ result +"}");

  }

  异常

  同上。

  @AfterThrowing(value ="pointCut()", throwing = "e")

  public void logException(Exception e) {

  System.out.println("除法...异常: {"+ e +"}");

  }

  以上内容为大家介绍了Spring注解之AOP功能测试,本文由多测师亲自撰写,希望对大家有所帮助。了解更多软件测试相关知识:https://www.duoceshi.com/xwzx-hydt/

新闻资讯

联系我们

联系人:王女士

手机:17727591462

电话:0755-21072941

邮箱:hr@duoceshi.com

地址: 广东省深圳市龙华区龙华街道清湖和平路62号优鼎企创园D栋201室,202室

用手机扫描二维码关闭
二维码