Issue
I have simple Spring Data JPA repository.
public interface UserRepository extends JpaRepository<UserEntity, Serializable>{ … }
Is there any way to monitor execution time for methods generated by Spring (for example findOne(…)
)?
Solution
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());
}
}
Answered By - Oliver Drotbohm