Fix CompositeMeterRegistryPostProcessor autowire

Update `CompositeMeterRegistryPostProcessor` to use constructor
autowiring for `Clock` detection.

Fixes gh-11856
This commit is contained in:
Jon Schneider
2018-01-30 21:21:41 -06:00
committed by Phillip Webb
parent 6dddceacad
commit 09181d6b16
2 changed files with 3 additions and 4 deletions

View File

@@ -18,7 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export;
import java.util.Arrays;
import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
@@ -29,8 +28,8 @@ import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.ConstructorArgumentValues;
import org.springframework.beans.factory.config.ConstructorArgumentValues.ValueHolder;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;
import org.springframework.beans.factory.support.GenericBeanDefinition;
@@ -105,9 +104,8 @@ class CompositeMeterRegistryPostProcessor
GenericBeanDefinition definition = new GenericBeanDefinition();
definition.setBeanClass(CompositeMeterRegistry.class);
definition.setPrimary(true);
definition.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_CONSTRUCTOR);
ConstructorArgumentValues arguments = new ConstructorArgumentValues();
arguments.addIndexedArgumentValue(0,
new ValueHolder(null, Clock.class.getName()));
arguments.addIndexedArgumentValue(1, getBeanReferences(registryBeans));
definition.setConstructorArgumentValues(arguments);
registry.registerBeanDefinition(COMPOSITE_BEAN_NAME, definition);

View File

@@ -73,6 +73,7 @@ public class CompositeMeterRegistryPostProcessorTests {
assertThat(primary).isInstanceOf(CompositeMeterRegistry.class);
assertThat(((CompositeMeterRegistry) primary).getRegistries())
.hasSize(2);
assertThat(primary.config().clock()).isNotNull();
});
}