如何记录 Spring Data JPA 存储库方法执行时间? [英] How to log Spring Data JPA repository method execution time?

查看:34
本文介绍了如何记录 Spring Data JPA 存储库方法执行时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有简单的 Spring Data JPA 存储库.

I have simple Spring Data JPA repository.

public interface UserRepository extends JpaRepository<UserEntity, Serializable>{ … }

有没有办法监控 Spring 生成的方法的执行时间(例如 findOne(…))?

Is there any way to monitor execution time for methods generated by Spring (for example findOne(…))?

推荐答案

最简单的方法是使用 CustomizableTraceInterceptor 如下:

The easiest way is to use a CustomizableTraceInterceptor as follows:

@Configuration
@EnableAspectJAutoProxy
public class SpringDataExecutionLoggingConfiguration {

  @Bean
  public CustomizableTraceInterceptor customizableTraceInterceptor() {

    CustomizableTraceInterceptor customizableTraceInterceptor = new CustomizableTraceInterceptor();
    customizableTraceInterceptor.setUseDynamicLogger(true);
    customizableTraceInterceptor.setExitMessage("Executed $[methodName] in $[invocationTime]");
    return customizableTraceInterceptor;
  }

  @Bean
  public Advisor advisor() {

    AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut();
    pointcut.setExpression("execution(public * org.springframework.data.repository.CrudRepository+.*(..))");
    return new DefaultPointcutAdvisor(pointcut, customizableTraceInterceptor());
  }
}

这篇关于如何记录 Spring Data JPA 存储库方法执行时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆