/** * @Component 注解 把切面类加入到IOC容器中 * @Aspect 注解 使之成为切面类 */ @Aspect @Component public class WebLogAcpect02 { /** * 定义切入点,切入点为com.example.demo.controller.UserController下的testObject(..)函数 */ @Pointcut("execution(public * com.example.demo.controller.UserController.testObject(..))") public void webLog() { } /** * JoinPoint 当前需要增强的函数 * 例:execution(User com.example.demo.controller.UserController.testObject(Integer,String,Integer,String)) */ /** * 前置通知,方法调用前被调用 */ @Before("webLog()") public void deBefore() { System.out.println("前置通知"); } /** * 后置通知 */ @AfterReturning("webLog()") public void deAfterReturning() { System.out.println("后置通知"); } /** * 环绕通知 */ @Around("webLog()") public Object deAround(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("环绕前增强============="); Object obj = joinPoint.proceed();//当前增强的函数 System.out.println("环绕后增强============="); return obj; } /** * 异常抛出通知 */ @AfterThrowing(value = "webLog()",throwing = "e") public void deAfterThrowing(Throwable e){ System.out.println("异常抛出增强=========="+e.getMessage()); } /** * 后置最终通知,不管是抛出异常或者正常退出都会执行 */ @After("webLog()") public void deAfter(){ System.out.println("后置最终通知"); } }
springboot aop
于 2019-11-13 23:39:44 首次发布