Files
spring-data-examples/mongodb/repository-metrics
Oliver Drotbohm 5197c10e62 #585 - Polishing.
Tabs in pom.xml. Renamed artifact for consistency.
2021-03-17 09:43:43 +01:00
..
2020-11-19 15:37:40 +01:00
2021-03-17 09:43:43 +01:00

Spring Data MongoDB 3.1 - Repository Metrics

Configure a RepositoryMethodInvocationListener to capture invocation metrics on Repository interfaces.

@Configuration(proxyBeanMethods = false)
class RepositoryMetricsConfiguration {

	@Bean
	public RepoMetricsPostProcessor repoMetricsPostProcessor() {
		return new RepoMetricsPostProcessor();
	}

	static class RepoMetricsPostProcessor implements BeanPostProcessor {

		@Override
		public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

			if (bean instanceof RepositoryFactoryBeanSupport) {

				RepositoryFactoryBeanSupport<?, ?, ?> repositoryFactoryBean = (RepositoryFactoryBeanSupport<?, ?, ?>) bean;

				repositoryFactoryBean.addRepositoryFactoryCustomizer(repositoryFactory -> {
					repositoryFactory.addInvocationListener(System.out::println);  // register the invocation listener
				});
			}

			return bean;
		}
	}
}