From fad610ef7269b2709a25d89834d4fb972a20701f Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Tue, 22 Nov 2022 13:45:33 +0100 Subject: [PATCH] Add factory for NoopTracer instead of using instance supplier Closes gh-33298 --- ...ObservabilityContextCustomizerFactory.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/actuate/observability/ObservabilityContextCustomizerFactory.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/actuate/observability/ObservabilityContextCustomizerFactory.java index a809199e346c..e486874a8a3b 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/actuate/observability/ObservabilityContextCustomizerFactory.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/actuate/observability/ObservabilityContextCustomizerFactory.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.BeanFactoryUtils; +import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; @@ -133,7 +134,7 @@ public int hashCode() { * {@link ConfigurationClassPostProcessor} and adds a {@link Tracer} bean definition * when a {@link Tracer} hasn't already been registered. */ - private static class NoopTracerRegistrar implements BeanDefinitionRegistryPostProcessor, Ordered, BeanFactoryAware { + static class NoopTracerRegistrar implements BeanDefinitionRegistryPostProcessor, Ordered, BeanFactoryAware { private BeanFactory beanFactory; @@ -154,7 +155,7 @@ public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) t } if (BeanFactoryUtils.beanNamesForTypeIncludingAncestors((ListableBeanFactory) this.beanFactory, Tracer.class, false, false).length == 0) { - registry.registerBeanDefinition("noopTracer", new RootBeanDefinition(Tracer.class, () -> Tracer.NOOP)); + registry.registerBeanDefinition("noopTracer", new RootBeanDefinition(NoopTracerFactoryBean.class)); } } @@ -164,4 +165,18 @@ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) } + static class NoopTracerFactoryBean implements FactoryBean { + + @Override + public Tracer getObject() { + return Tracer.NOOP; + } + + @Override + public Class getObjectType() { + return Tracer.class; + } + + } + }