spring-atguigu-AOP---27

代码:

我们是需要一个日志的切面类的。

分类:

前置通知 @Before

后置通知 @After

返回通知 @AfterReturning

异常通知 @AfterThrowing

环绕通知@Around

代码:

第一步:

package com.atguigu;

public class MathCalculator {
    public int div(int i,int j){
        return i/j;
    }
}

第二步:

package com.atguigu;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;

@Aspect
public class LogAspects {

    //    @Pointcut("execution(public int com.atguigu.MathCalculator.div(int,int))")
    @Pointcut("execution(public int com.atguigu.MathCalculator.*(..))")
    public void pointCut() {

    }

    @Before("pointCut()")
    public void logStarrt(JoinPoint joinPoint) {
        System.out.println("开始运行。。。。。。。。。"+joinPoint.getSignature().getName());
    }

    @After("pointCut()")
    public void logEnd() {
        System.out.println("结束。。。。。。。。。。");
    }

    @AfterReturning(value = "pointCut()",returning = "object")
    public void logReturn(Object object) {
        System.out.println("有返回值。。。。。。。。。。"+object);
    }

    @AfterThrowing(value="pointCut()",throwing="exception")
    public void logException(Exception exception) {
        System.out.println("除法异常。。。。。。。。。。");
    }
}

第三步:加入到容器

public class AppConfig {

    @Bean
    public MathCalculator calculator(){
         return new MathCalculator();
    }

    @Bean
    public LogAspects logAspects(){
          return new LogAspects();
    }
}

第四步:告诉spring当前的类是一个切面

@Aspect
public class LogAspects {}

第五步:

----------------------------------------------------27-----------------------------------------------------

原理:

第一步:点进去

第二步:点进去

第三步:点进去

原理:

----------------------------------------------------28------------------------------------------------------

略。。。。。。

----------------------------------------------------29------------------------------------------------------

发布了374 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_28764557/article/details/104742355