当前位置: 首页 > article >正文

007-利用切面计算方法耗时

利用切面计算方法耗时

  • 一、引入依赖
  • 二、创建注解
  • 三、创建切面
  • 四、controller测试
  • 五、结果输出

一、引入依赖

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

二、创建注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TimeConsume {
}

三、创建切面

@Slf4j
@Aspect
@Component
public class TimeConsumeAspect {

    @Around("@annotation(org.example.annotation.TimeConsume)")
    public Object executionTimeLogger(ProceedingJoinPoint joinPoint) {
        try {
            long startTime = System.currentTimeMillis();
            Object proceed = joinPoint.proceed();
            long executionTime = (System.currentTimeMillis() - startTime);
            log.info("{}方法在{}毫秒内执行完毕", joinPoint.getSignature(), executionTime);
            return proceed;
        } catch (Throwable e) {
            log.error("在计算{}方法执行时间时出错", joinPoint.getSignature(), e);
            return null;
        }
    }

}

四、controller测试

@RestController
public class TestSpiController {

    @TimeConsume
    @GetMapping("/test")
    public void myMethod() {
        try {
            Thread.sleep(20000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

五、结果输出

在这里插入图片描述


http://www.kler.cn/a/454542.html

相关文章:

  • 云原生架构中的中间件容器化:优劣势与实践探索
  • 15、【OS】【Nuttx】OS裁剪,运行指定程序,周期打印当前任务
  • Docker 开启远程端口访问2375
  • 【Compose multiplatform教程08】【组件】Text组件
  • 我的Opencv
  • [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
  • vue中el-select选择框带搜索和输入,根据用户输入的值显示下拉列表
  • R语言的数据类型
  • 随手笔记【六】
  • TDesign:Tabs 选项卡
  • Boost之log日志使用
  • Elasticsearch安装和数据迁移
  • [微服务]elasticsearc客服端操作
  • 【从零开始入门unity游戏开发之——C#篇33】C#委托(`Delegate`)和事件(`event` )、事件与委托的区别、Invoke()的解释
  • Spring Boot的开发工具(DevTools)模块中的热更新特性导致的问题
  • Vue3 Suspense:处理异步渲染过程
  • 力扣-数据结构-4【算法学习day.75】
  • EleutherAI/pythia-70m
  • 联通移动大内网如何使用plex流媒体服务器
  • 讲一个自己写的 excel 转 html 的 java 工具
  • 三只脚的电感是什么东西?
  • Unity2021.3.16f1可以正常打开,但是Unity2017.3.0f3却常常打开闪退或者Unity2017编辑器运行起来就闪退掉
  • 更改 pnpm 的全局存储位置
  • User Script Sandboxing作用 及 在iOS项目中获取GitCommitHash
  • MacOS安装Xcode(非App Store)
  • 2-197 基于matlab的生物地理学优化算法(BBO)在无人机三维航迹规划中的应用