LogPerformanceConfiguration.java

package org.imageconverter.config;

import org.imageconverter.application.ImageConversionService;
import org.imageconverter.util.performance.PerformanceMonitor;
import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class LogPerformanceConfiguration {

    @Bean
    public Advisor performanceMonitorAdvisor(final PerformanceMonitor performanceMonitor) {

	final var pointCut = new AspectJExpressionPointcut();

	final var expression = new StringBuilder() //
			.append(performanceMonitor.createExpression(ImageConversionService.class)) //
			.toString();

	pointCut.setExpression(expression);

	return new DefaultPointcutAdvisor(pointCut, performanceMonitor);
    }
}