V哥官网:http://www.vgxit.com
本博客对应视频教程:http://www.vgxit.com/course/23
Spring Aop环绕通知
1,概述
环绕通知是SpringAOP中最强大的通知,它可以实现前置通知和后置通知。它保留了调度被代理对象原有方法的功能,所以它强大又灵活。但是由于强大,它的可控制性不那么强,如果不需要大量改变业务逻辑 而言并不需要使用它。
环绕通知说白了,就是把我们之前的,前置通知,后置通知,正常返回通知,异常返回通知合并到一起。
2,具体实现
package com.vgxit.learn.spring.ktdm.springaop.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class AroundAspect {
@Pointcut("execution(* com.vgxit.learn.spring.ktdm.springaop.service.impl.*.*(..))")
public void aroundPointer() {}
@Around("aroundPointer()")
public void around(ProceedingJoinPoint jp) {
boolean hasException = false;
System.out.println("环绕通知-获取数据库连接");
System.out.println("环绕通知-开启事物");
try {
jp.proceed();//这段代码的意思,就是运行真正的切点方法
} catch (Throwable throwable) {
hasException = true;
} finally {
System.out.println("环绕通知-程序运行完成");
}
if (hasException) {
System.out.println("环绕通知-程序异常");
} else {
System.out.println("环绕通知-程序正常");
}
}
}
我们再来把这个切面注入到ioc容器中,然后测试运行。