美文网首页
7.18_23期业务层接口执行效率

7.18_23期业务层接口执行效率

作者: 萧修 | 来源:发表于2023-07-23 01:00 被阅读0次

本文将之前学习的内容整理,写一个万次执行耗时案例

导入的依赖坐标有
德鲁伊操作数据库,myql、mybatis

<dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.16</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.13</version>
    </dependency>
    
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.32</version>
    </dependency>

Spring系列
基础spring-context
Spring测试spring-test
Spring的jdbcspring-jdbc
mybatis的Springmybatis-spring
切面aspectjweaver

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
    
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>
    
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
      <scope>compile</scope>
    </dependency>

单元测试

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>

执行万次耗时,需要使用到切面类型的环绕,执行方法前后获取系统时间,取差值。在环绕中有一个比较关键的类
ProceedingJoinPoint

pjp能获取到此方法运行的签名信息,运行的类以及方法

比如打印

万次耗时:interface com.itheima.service.BookServicefindByid-----2736ms

    public void runSpeed(ProceedingJoinPoint pjp) throws Throwable {

        Long startTime = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            pjp.proceed();
        }
        Long endTime = System.currentTimeMillis();

        Signature signature = pjp.getSignature();
        Class className = signature.getDeclaringType();
        System.out.println("getDeclaringType:" + className);

        String methodName =  signature.getName();
        System.out.println("getName:" + methodName);

        System.out.println("万次耗时:" + className + methodName + "-----"+(endTime - startTime) + "ms");
    }

相关文章

  • 三层架构到DDD分层架构的演变

    参考极客时间《DDD实战》 三层架构 传统的三层架构主要分为业务接口层、业务逻辑层、数据访问层 业务接口层:主要是...

  • Thrift

    架构图 业务层:根据业务逻辑,实现thrift文件中接口接口层:根据thrift文件,生成框架代码协议层:对数据流...

  • docker+django+vue实例开发之二:后端api实现(

    2)实现业务逻辑层和接口层业务逻辑层用于实现功能模块涉及的业务逻辑,对于信息管理系统而言,大多是数据处理逻辑;接口...

  • 7.dubbo分层架构概述

    名称中文名分类功能SPI接口SPI接口实现Service层业务层业务Config层配置层对外提供的方便服务端和消费...

  • springmvc+mybatis

    表现层(springmvc) 业务层service接口 持久层mybatis mysql spring将各层进行...

  • 在非spring管理的类中如何调用spring自动装配管理的实体

    有些时候不但需要在controller层中调用业务service接口去执行查询数据库的内容,而且还会在普通类中调用...

  • Dubbo 的整体架构设计有哪些分层?

    接口服务层(Service):该层与业务逻辑相关,根据 provider 和 consumer 的业务设计对应的接...

  • 采坑:java调shell脚本执行hive语句

    最近有个需求,就是SpringBoot提供一个web接口给业务方,业务方传入参数调接口,接口去执行hive离线计算...

  • Tp6 阿里短信服务

    Tp6短信服务流程梳理 Sms控制器层获取信息并验证通过业务层来执行发送命令 业务Business层 业务层获取到...

  • 在JVM中运行LuaVM

    目前已有 luaj 项目可在JVM中执行Lua脚本,由于其编译效率和执行效率不如 luac ,所以开发了这个接口和...

网友评论

      本文标题:7.18_23期业务层接口执行效率

      本文链接:https://www.haomeiwen.com/subject/jojgudtx.html