SpringBoot整合AOP使用

        1.在pom.xml中引入相对的jar包

 
    
        org.aspectj
        aspectjweaver
    
    
        org.aspectj
        aspectjtools
    

2.在自己的包结构下,重新建立一个aop包的,此包用来作为本次项目的面向切面编程

SpringBoot整合AOP使用_第1张图片

3.在项目里面建立一个java类,将此类标记为切面类,需要开启两个注解 @Component,此注解的意思是将当前类的对象创建使用维护交由Spring容器管理维护,@Aspect 将当前类标记为切面类,@Order() 优先级 值越低优先级越高

 
  

4.AOP 一共有五种通知,都相对应的注解进行标识,在方法上进行表示

(1) @Before注解表示作为前置通知

(2)@After 最终通知

(3)@AfterReturning  后置通知(返回通知)

(4)@AfterThrowing 异常通知

(5)@Around 环绕通知

不管进行什么的切面通知,都要配置切入点,标记这个通知或者说被增强类,在那个包下或者在某个方法下

在此演示环绕通知,检测service包下所有的方法,记录他们的耗时时间,在控制台上进行打印

@Component // 将当前类的对象创建使用维护交由Spring容器管理维护
@Aspect // 将当前类标记为切面类
public class TimerAspect {

    @Around("execution(* com.zy.store.service.impl.*.*(..))")
    public Object around(ProceedingJoinPoint pjp) throws Throwable {

        // 先记录当前时间
        long start = System.currentTimeMillis();
        Object result = pjp.proceed(); // 调用目标方法:login
        // 插入数据库
        // 后记录当前时间
        long end = System.currentTimeMillis();

        System.out.println("耗时:" + (end - start));
        //将当前的环绕通知映射到某个切面上(指定连接的点)
        return result;
    }

}

你可能感兴趣的:(spring,boot,java,spring,后端)