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块的作用——无论如何,它总会在方法执行结束之后被织入。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~