SpringBoot ~ AOP切面编程

237 阅读1分钟

添加pom依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

编写切面类

/**
 * @author wsyjlly
 * @create 2019.06.14 - 17:23
 **/
@Aspect
public class LogAspect {
    @Pointcut("execution(* cn.wsyjlly.controller.*.*(..))")
    public void pc(){}

    @Before(value="pc()")
    public void before(JoinPoint jp){
        String name = jp.getSignature().getName();
        System.out.println(name+"方法开始执行...");
        System.out.println(name+"——————————————————————————————");
    }

    @After(value = "pc()")
    public void after(JoinPoint jp){
        String name = jp.getSignature().getName();
        System.out.println(name+"——————————————————————————————");
        System.out.println(name+"方法执行结束...");
    }

    @AfterReturning(value = "pc()" , returning = "result")
    public void afterReturning(JoinPoint jp,Object result){
        String name = jp.getSignature().getName();
        System.out.println(name+"方法返回值为:"+result);
    }

    @AfterThrowing(value = "pc()" , throwing = "e")
    public void afterThrowing(JoinPoint jp,Exception e){
        String name = jp.getSignature().getName();
        System.out.println(name+"方法抛出异常:"+e.getClass().getName());
    }

    @Around("pc()")
    public Object around(ProceedingJoinPoint pjp) throws Throwable{
        return pjp.proceed();
    }
}