AOP(四)之After增强处理

After增强处理

使用@After可以修饰After增强处理,它与AfterReturning增强处理有点相似,但也有区别:

  • AfterReturing增强处理只有在目标方法成功完成后才会被织入。
  • After增强处理不管目标方法如何结束(包括成功完成和遇到异常中止两种情况),它都会被织入。

测试

实现类方法

    @Override
    public void testAfter1() {
        System.out.println("testAfter增强处理执行了!!!");
    }

    @Override
    public void testAfter2() {
        System.out.println("testAfter增强处理执行了!!!----测试异常情况下");
        throw new RuntimeException("testAfter抛出异常!!!");
    }

控制层

    @GetMapping("/test6")
    public void test6(){
        logService.testAfter1();
        logService.testAfter2();
    }

增强方法

@Pointcut(value = "execution(* com.example.aopdemo.iservice.ISysLogService.testAfter*(..))")
    public void poingCutOfAfter(){}

    @After(value = "poingCutOfAfter()")
    public void logTestAfter(){
        System.out.println("测试After-----");
    }

执行结果

testAfter增强处理执行了!!!
测试After-----
testAfter增强处理执行了!!!----测试异常情况下
测试After-----
2019-12-01 12:16:01.093 ERROR 368380 --- [nio-8800-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: testAfter抛出异常!!!] with root cause

After增强处理作用非常类似于异常处理中finally块的作用——无论如何,它总会在方法执行结束之后被织入。

posted @ 2022-10-30 23:22  寒小韩  阅读(132)  评论(0编辑  收藏  举报