spring boot aop如何记录方法执行时间

发布时间:2021-08-18 11:01:24 作者:小新
来源:亿速云 阅读:306

小编给大家分享一下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如何记录方法执行时间”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. 怎么在Spring Boot中实现拦截器和过滤器
  2. 怎么在Spring Boot 中通过AOP和自定义注解实现权限控制

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring boot aop

上一篇:在ubuntu下php网页输出中文乱码怎么解决

下一篇:Java线程中start方法如何回调run方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》