AOP(五)之Around增强处理
Around增强处理
@Around注解用于修饰Around增强处理,Around增强处理是功能比较强大的增强处理,它近似于Before增强处理和AfterReturing增强处理的总结,Around增强处理既可在执行目标方法之前增强动作,也可在执行目标方法之后织入增强的执行。与Before增强处理、AfterReturning增强处理不同的是,Around增强处理可以决定目标方法在什么时候执行,如何执行,甚至可以完全阻止目标方法的执行。
当定义一个Around增强处理方法时,该方法的第一个形参必须是ProceedJoinPoint类型(至少含有一个形参),在增强处理方法体内,调用ProceedingJoinPoint参数的procedd()方法才会执行目标方法——这就是Around增强处理可以完全控制方法的执行时机、如何执行的关键;如果程序没有调用ProceedingJoinPoint参数的proceed()方法,则目标方法不会被执行。
测试
目标方法
@Override
public String testAround1() {
System.out.println("这是testAround1()里的输出---");
return "这里是testAround1()";
}
控制层
@GetMapping("/test7")
public void test7(){
String s = logService.testAround1();
System.out.println(s);
}
增强处理
@Pointcut(value = "execution(* com.example.aopdemo.iservice.ISysLogService.testAround1(..))")
public void poingCutOfAround(){}
@Around(value = "poingCutOfAround()")
public Object logTestAround1(ProceedingJoinPoint pj) throws Throwable {
System.out.println("testAround1()执行前----(1)");
Object ret = pj.proceed();
System.out.println("testAround1()执行后----(1)");
return ret+"在Around增强中进行处理!";
}
测试结果
testAround1()执行前----(1)
这是testAround1()里的输出---
testAround1()执行后----(1)
这里是testAround1()在Around增强中进行处理!

浙公网安备 33010602011771号