统计业务方法耗时【项目 商城】

简介: 统计业务方法耗时【项目 商城】

统计业务方法耗时

检测项目所有的业务层方法的耗时(开始执行时间和结束执行之差),在不改变项目主体流程代码的前提条件完成此功能。

AOP

面向切面编程。它并不是Spring框架的特性,Spring很好的支持AOP编程。

如果我们相对业务某一些方法同时添加相同的功能需求,并且在不改变原有的业务功能逻辑的基础上进行完成,可以使用AOP的切面编程进行开发。
首先定义一个类,将这个类作为切面类。

在这个类中定义切面方法(5类)。

将这个切面方法的业务逻辑要执行的代码进行编写和设计。

通过连接点来连接目标方法,就是用粗粒度表达式和细粒度表达式进行连接。

切面方法

1.切面方法修饰符必须是public。

2.切面方法的返回值可以是void和Object。如果这个方法被Around注解修饰词方法必须声明为Object类型,反之随意。

3.切面方法的方法名称可以自定义。

4.切面方法可以接受参数,参数是ProceedingJoinPoint接口类型的参数。但是@Around所修饰方法必须要传递这个参数,其他随

统计业务方法时长功能

1.AOP不是Spring的内部封装的技术,所以使用要进行导包操作。

    <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
        </dependency>

2.定义一个切面类。

aop | TimerAspect

package com.cy.store.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Component//将当前类的对象创建使用维护交由Spring容器维护
@Aspect//将此类标记为切面类
public class TimerAspect {
}

3.定义切面方法,使用环绕通知的方式进行编写。ProceedingJoinPoint接口表示连接点,目标方法的对象。

   public Object around(ProceedingJoinPoint pjp) throws Throwable {
        // 先记录起始时间
        long start = System.currentTimeMillis();
        // 执行连接点方法,即切面所在位置对应的方法。本项目中表示执行注册或执行登录等
        Object result = pjp.proceed();//调用目标方法
        // 后记录结束时间
        long end = System.currentTimeMillis();
        // 计算耗时
        System.err.println("耗时:" + (end - start) + "ms.");
        // 返回连接点方法的返回值
        return result;
    }

4.将当前的环绕通知映射到某个切面上。

    @Around("execution(* com.cy.store.service.impl.*.*(..))")

5.启动项目,随机去访问任意功能模块。

READ–统计业务方法耗时

相关文章
|
NoSQL Redis
淘东电商项目(75) -秒杀系统(用户操作频率限制)
淘东电商项目(75) -秒杀系统(用户操作频率限制)
64 0
|
存储 区块链
秒合约交易系统自定义行情周期技术开发原理及源码分析
秒合约交易系统自定义行情周期技术开发原理及源码分析
|
NoSQL 关系型数据库 MySQL
业务让我实现一个排队导出功能
业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;结合以上原因,对导出操作进行排队;
|
存储 SQL NoSQL
千万级用户ms级抽奖N名设计方案
大促节零点时,从关注的用户中抽出N个人进行礼品发放,预计全网超过千万用户参加关注抽奖活动,要求: 同一用户不能重复参与 同一用户不允许二次中奖
133 0
|
SQL BI Shell
报表统计_广告投放统计_代码实现 | 学习笔记
快速学习报表统计_广告投放统计_代码实现
115 0
报表统计_广告投放统计_代码实现 | 学习笔记
|
大数据 开发者
电商项目之支付类指标统计表分析|学习笔记
快速学习电商项目之支付类指标统计表分析
|
测试技术 数据库
接口测试平台:并发模式继续完工
接口测试平台:并发模式继续完工
接口测试平台:并发模式继续完工
|
测试技术
软件测试面试题:并发用户数是什么?跟在线用户数什么关系?
软件测试面试题:并发用户数是什么?跟在线用户数什么关系?
356 0
|
测试技术
实战 | JMeter 典型电商场景(下单/支付)的性能压测
实战 | JMeter 典型电商场景(下单/支付)的性能压测