当前位置: 首页 > 编程笔记 >

spring boot aop 记录方法执行时间代码示例

茹轩昂
2023-03-14
本文向大家介绍spring boot aop 记录方法执行时间代码示例,包括了spring boot aop 记录方法执行时间代码示例的使用技巧和注意事项,需要的朋友参考一下

本文研究的主要是spring boot aop 记录方法执行时间的实现代码,具体如下。

为了性能调优,需要先统计出来每个方法的执行时间,直接在方法前后log输出太麻烦,可以用AOP来加入时间统计

添加依赖

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

在application.properties中加入配置

spring.aop.auto=true

spring.aop.auto属性默认是开启的,也就是说只要引入了AOP依赖后,默认已经增加了@EnableAspectJAutoProxy。 切记千万不要加入多余的信息,如@EnableAspectJAutoProxy!

实现具体代码

@Component
@Aspect
public class LogAspect {
	private static final Log LOG = LogFactory.getLog(LogAspect.class);
	/**
   * 定义一个切入点.
   * 解释下:
   *
   * ~ 第一个 * 代表任意修饰符及任意返回值.
   * ~ 第二个 * 定义在web包或者子包
   * ~ 第三个 * 任意方法
   * ~ .. 匹配任意数量的参数.
   */
	@Pointcut("execution(* com.wedo.stream.service..*.*(..))")
	   public void logPointcut(){
	}
	@org.aspectj.lang.annotation.Around("logPointcut()")
	   public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable{
		//  	 LOG.debug("logPointcut " + joinPoint + "\t");
		long start = System.currentTimeMillis();
		try {
			Object result = joinPoint.proceed();
			long end = System.currentTimeMillis();
			LOG.error("+++++around " + joinPoint + "\tUse time :
 " + (end - start) + " ms!");
			return result;
		}
		catch (Throwable e) {
			long end = System.currentTimeMillis();
			LOG.error("+++++around " + joinPoint + "\tUse time : 
" + (end - start) + " ms with exception : " + e.getMessage());
			throw e;
		}
	}
}

注意问题

aop后方法不能正确返回值

这个代理方法一定要返回值,否则,在代码中就没有返回值了。

//这样是不对的
 public void doAround(ProceedingJoinPoint joinPoint){}

Spring的文档中这么写的:Spring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理。如果被代理的目标实现了至少一个接口,则会使用JDK动态代理。所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理。

默认是JDK动态代理,更改为cglib

总结

以上就是本文关于spring boot aop 记录方法执行时间代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

 类似资料:
  • 本文向大家介绍PHP间隔一段时间执行代码的方法,包括了PHP间隔一段时间执行代码的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP间隔一段时间执行代码的方法。分享给大家供大家参考。具体分析如下: PHP如何设置每隔一段时间自动执行某段代码?例如定时生成静态文件之类的,这就需要设置休眠时间,即每隔一段时间程序就会调用某段代码. 代码如下: 希望本文所述对大家的PHP程序设计有所帮助

  • 问题内容: 我有简单的Spring Data JPA存储库。 有什么方法可以监视Spring生成的方法的执行时间(例如)? 问题答案: 最简单的方法是使用如下:

  • 本文向大家介绍ASP显示页面执行时间的方法,包括了ASP显示页面执行时间的方法的使用技巧和注意事项,需要的朋友参考一下 在 ASP 程序中,要想计算一个页面从执行开始到执行结束需要花费多少时间是非常简单的!我们知道,ASP 是解释型语言,也就是说它的执行过程是从页面的开端到页面的尾端,我们只需要计算一个时间差就可以得到页面执行的时间了。 下面看看是怎么实现的,分为三步! 第一步:在页面的头部定义一

  • 本文向大家介绍java Timer测试定时调用及固定时间执行代码示例,包括了java Timer测试定时调用及固定时间执行代码示例的使用技巧和注意事项,需要的朋友参考一下 本文实例主要进行java Timer(定时调用、固定时间执行)测试,具体实现代码如下。 测试1 当任务执行时间小于重复执行的间隔时间 代码: 结果: 0dddd2018-01-11 15:34:57.826 0dddd2018-

  • 本文向大家介绍写一个方法记录函数运行的时间相关面试题,主要包含被问及写一个方法记录函数运行的时间时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍python记录程序运行时间的三种方法,包括了python记录程序运行时间的三种方法的使用技巧和注意事项,需要的朋友参考一下 python记录程序运行时间的三种方法              这里提供了python记录程序运行时间的三种方法,并附有实现代码,最后进行比较,大家参考下: 方法1 方法 2 方法3 方法1和方法2都包含了其他程序使用CPU的时间,是程序开始到程序结束的运行