• 首页

  • 归档

  • 清单
    歌单 分类 标签

  • 心情

  • 画廊

  • 关于

  • 友链

  • 留言板
H i , X i a o y a o
H i , X i a o y a o

逍遥叹

那一年,我也变成了光!!

05
26
Java

学习笔记:AOP切面通知

发表于 2020-05-26 • Java • 被 134 人看爆

AOP切面通知

  1. (@Before) 前置通知:在方法调用之前执行
  2. (@After) 后置通知:在方法正常调用之后执行
  3. (@Around) 环绕通知:在方法调用之前和之后,都分别可以执行的通知
  4. (@AfterThrowing) 异常通知:如果在方法调用过程中发生异常,则通知
  5. (@AfterReturning) 最终通知:在方法调用之后执行
@Aspect
@Component
public class ServiceLogAspect {

public static final Logger log =
            LoggerFactory.getLogger(ServiceLogAspect.class);

   /**
     * 切面表达式:
     * execution 代表所要执行的表达式主体
     * 第一处 * 代表方法返回类型 *代表所有类型
     * 第二处 包名代表aop监控的类所在的包
     * 第三处 .. 代表该包以及其子包下的所有类方法
     * 第四处 * 代表类名,*代表所有类
     * 第五处 *(..) *代表类中的方法名,(..)表示方法中的任何参数
     *
     * @param joinPoint
     * @return
     * @throws Throwable
     */
 // @Around("@annotation(com.xiaoyao.service.annotation.DubboExcCatch)")   //注解形式使用
    @Around("execution(* com.imooc.service.impl..*.*(..))")  // 扫描包使用
    public Object recordTimeLog(ProceedingJoinPoint joinPoint) throws Throwable {

        log.info("====== 开始执行 {}.{} ======",
                        joinPoint.getTarget().getClass(),
                        joinPoint.getSignature().getName());

        // 记录开始时间
        long begin = System.currentTimeMillis();

        // 执行目标 service
        Object result = joinPoint.proceed();

        // 记录结束时间
        long end = System.currentTimeMillis();
        long takeTime = end - begin;

        if (takeTime > 3000) {
            log.error("====== 执行结束,耗时:{} 毫秒 ======", takeTime);
        } else if (takeTime > 2000) {
            log.warn("====== 执行结束,耗时:{} 毫秒 ======", takeTime);
        } else {
            log.info("====== 执行结束,耗时:{} 毫秒 ======", takeTime);
        }

        return result;
    }
}
分享到:
学习笔记:Lambda表达式
学习笔记:Java泛型反射实践
  • 文章目录
  • 站点概览
逍遥叹

小小程序员-逍遥叹

那一年,我也变成了光!!

Github QQ Email RSS
看爆 Top5
  • 为什么要写这篇博客? 349次看爆
  • 开发手记:Centos环境常用命令 342次看爆
  • 学习笔记:Java动态代理 296次看爆
  • 学习笔记:Java中的锁 289次看爆
  • Could not get JDBC Connection问题排查 273次看爆

Copyright © 2021 逍遥叹 · 粤ICP备17164804号-1

Proudly published with Halo · Theme by fyang · 站点地图