0
点赞
收藏
分享

微信扫一扫

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


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

  • ​​统计业务方法耗时​​
  • ​​AOP​​
  • ​​切面方法​​
  • ​​统计业务方法时长功能​​

统计业务方法耗时

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

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.启动项目,随机去访问任意功能模块。

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

READ–统计业务方法耗时


举报

相关推荐

0 条评论