注:本文只介绍如何处理异常通知
工作需要,之前的项目上线后,基本是靠运维查看并发现运行中的异常。新的项目启动一段时间了,单纯的靠运维人工发现程序运行中的异常效率低下,可以利用 Spring 的 AOP(Aspect Oriented Programming面向切面编程)来实现自动捕获项目中发生的异常。
1. 创建一个 Maven 项目,配置 pom 文件,引入相关依赖 jar 包
1 | <dependencies> |
2. 创建目标 target,即需要被增强的类
1 | import net.okdi.core.service.PromoService; |
3. 创建通知(即增强类 advice)
1 | package net.okdi.core.exception; |
在 aspectj 框架中它的增强可以不实现任何接口,只需要定义出增强功能(方法)。两个参数 JoinPoint 和 Exception。JoinPoint 是切点,它的 getArgs() 方法可以获取传入的参数;getSignature() 方法返回一个 Signature 对象,这个对象的 getDeclaringTypeName() 方法可以获取异常发生的类的全路径,getName() 方法可以获取抛出异常的方法。
4. 在 Spring 的 xml 配置文件中配置(或者使用 @AfterThrowing 注解配置)
1 | "1.0" encoding="UTF-8" xml version= |
proxy-target-class 默认false(有接口 jdk 动态代理,无接口 cglib 动态代理)修改为 true 强制使用 cglib 动态代理。
5. 编写测试类进行测试
1 | import net.okdi.core.service.PromoService; |
6. 测试结果
至此,利用 Spring 整合 AspectJ 框架进行 AOP 中的异常通知处理开发完毕!