众所周知,spring有两大特性,IOC(控制反转),AOP(切面编程),其实AOP到底是什么,这个定义一直很模糊,在我看来,AOP是切了一个面,这个面放一些我们程序公用一些处理逻辑,比如日志输出,异常统一处理,达到解耦的效果,话不多说,直接上一个统一捕获异常的代码。
1.导入AOP依赖
我用的是Spring的aop
org.springframework.boot spring-boot-starter-aop2.4.5
2.创建切面类
这个类有什么作用讷???它里面定义了切点,就是你想从哪里开始砍一刀,可以精确到方法哦。
@Aspect
@Component
public class TestAOP {
@Pointcut(value = "execution(* com.xxx.aoptest.controller.*.*(..))")
public void checkmethods() {
}
@Around(value = "checkmethods()")
public Object sureaop(ProceedingJoinPoint joinPoint) {
try {
Object proceed = joinPoint.proceed();
return proceed;
} catch (Throwable throwable) {
ResultDTO.inputMsg(joinPoint);
return throwable;
}
}
}
@Pointcut中的值 就是你要切的点啦,注意注意注意!!!你切的那个面必须有层注解,不然切不到,比如切的是控制层或服务层,那么必须有注解哦!!! execution语法百度一下就ok啦,
@Aroud表示增强处理
@Before
@After
可自行百度。
然后启动项目,当你切的面下的方法执行异常的时候,我们可以在catch中统一处理,比如打印出错的方法名等等。



