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增强中进行处理!
posted @ 2022-10-30 23:22  寒小韩  阅读(164)  评论(0)    收藏  举报