package org.springframework.data.simpledb.logging; import org.springframework.aop.Advisor; import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.aop.interceptor.CustomizableTraceInterceptor; import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; /** * Additional Configuration for {@link CustomizableTraceInterceptor} to be used for custom logging * <br/> * The Interceptor will be applied to public methods declared in {@link org.springframework.data.repository.Repository} * */ @Configuration @EnableAspectJAutoProxy public class LoggingConfiguration { private static final String POINTCUT_EXECUTION_REPOSITORY = "execution(public * org.springframework.data.repository.Repository+.*(..))"; private static final String EXCEPTION_MESSAGE = "Exception thrown: " + CustomizableTraceInterceptor.PLACEHOLDER_EXCEPTION; private static final String EXIT_METHOD_MESSAGE = "Exiting method: " + CustomizableTraceInterceptor.PLACEHOLDER_METHOD_NAME + " having return value " + CustomizableTraceInterceptor.PLACEHOLDER_RETURN_VALUE + ", execution time: " + CustomizableTraceInterceptor.PLACEHOLDER_INVOCATION_TIME + " ms"; private static final String ENTER_METHOD_MESSAGE = "Entering method: " + CustomizableTraceInterceptor.PLACEHOLDER_METHOD_NAME + "(" + CustomizableTraceInterceptor.PLACEHOLDER_ARGUMENTS + ")"; @Bean public CustomizableTraceInterceptor interceptor() { CustomizableTraceInterceptor interceptor = new CustomizableTraceInterceptor(); interceptor.setEnterMessage(ENTER_METHOD_MESSAGE); interceptor.setExceptionMessage(EXCEPTION_MESSAGE); interceptor.setExitMessage(EXIT_METHOD_MESSAGE); return interceptor; } @Bean public Advisor traceAdvisor() { AspectJExpressionPointcut pointcut = new AspectJExpressionPointcut(); pointcut.setExpression(POINTCUT_EXECUTION_REPOSITORY); return new DefaultPointcutAdvisor(pointcut, interceptor()); } }