java - 如何记录 Spring Data JPA 存储库方法执行时间?

标签 java spring jpa spring-data spring-data-jpa

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

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

有什么方法可以监控 Spring 生成的方法(例如 findOne(…))的执行时间?

最佳答案

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

@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());
  }
}

关于java - 如何记录 Spring Data JPA 存储库方法执行时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25977660/

相关文章:

java - 在最小堆中添加或删除元素

java - JEdi​​torPane - 从 ArrayList<String> 内容中设置文本?

java - 我的 AJAX 不会运行 SUCCESS 函数,但会执行我的 Controller JAVA

java - 这是工厂模式的完美问题吗?

java - 使用 Spring ACL 3 保护域对象

java - 条形码生成服务器端还是客户端?

java - 使用maven部署到weblogic 11g

java - 如何在 JPA 中映射 ManyToMany 关联与联接表

java - JPA 中具有复合主键和版本字段的表

java - 仅转发结果集不支持请求的操作