diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java index 6ef084007f5..d177ee41f7f 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java @@ -47,7 +47,7 @@ import org.springframework.beans.BeansException; import org.springframework.boot.actuate.endpoint.Sanitizer; import org.springframework.boot.actuate.endpoint.annotation.Endpoint; import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; -import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData; +import org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -107,15 +107,15 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext private ContextConfigurationProperties describeConfigurationProperties( ApplicationContext context, ObjectMapper mapper) { - ConfigurationBeanFactoryMetaData beanFactoryMetaData = getBeanFactoryMetaData( + ConfigurationBeanFactoryMetadata beanFactoryMetadata = getBeanFactoryMetadata( context); Map beans = getConfigurationPropertiesBeans(context, - beanFactoryMetaData); + beanFactoryMetadata); Map beanDescriptors = new HashMap<>(); for (Map.Entry entry : beans.entrySet()) { String beanName = entry.getKey(); Object bean = entry.getValue(); - String prefix = extractPrefix(context, beanFactoryMetaData, beanName); + String prefix = extractPrefix(context, beanFactoryMetadata, beanName); beanDescriptors.put(beanName, new ConfigurationPropertiesBeanDescriptor( prefix, sanitize(prefix, safeSerialize(mapper, bean, prefix)))); } @@ -123,10 +123,10 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext context.getParent() == null ? null : context.getParent().getId()); } - private ConfigurationBeanFactoryMetaData getBeanFactoryMetaData( + private ConfigurationBeanFactoryMetadata getBeanFactoryMetadata( ApplicationContext context) { - Map beans = context - .getBeansOfType(ConfigurationBeanFactoryMetaData.class); + Map beans = context + .getBeansOfType(ConfigurationBeanFactoryMetadata.class); if (beans.size() == 1) { return beans.values().iterator().next(); } @@ -135,11 +135,11 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext private Map getConfigurationPropertiesBeans( ApplicationContext context, - ConfigurationBeanFactoryMetaData beanFactoryMetaData) { + ConfigurationBeanFactoryMetadata beanFactoryMetadata) { Map beans = new HashMap<>(); beans.putAll(context.getBeansWithAnnotation(ConfigurationProperties.class)); - if (beanFactoryMetaData != null) { - beans.putAll(beanFactoryMetaData + if (beanFactoryMetadata != null) { + beans.putAll(beanFactoryMetadata .getBeansWithFactoryAnnotation(ConfigurationProperties.class)); } return beans; @@ -204,7 +204,7 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext * @return the prefix */ private String extractPrefix(ApplicationContext context, - ConfigurationBeanFactoryMetaData beanFactoryMetaData, String beanName) { + ConfigurationBeanFactoryMetadata beanFactoryMetaData, String beanName) { ConfigurationProperties annotation = context.findAnnotationOnBean(beanName, ConfigurationProperties.class); if (beanFactoryMetaData != null) { diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetaData.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata.java similarity index 75% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetaData.java rename to spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata.java index 42cc0b4b968..8c28ef4faa5 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetaData.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata.java @@ -27,6 +27,7 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; /** @@ -36,11 +37,11 @@ import org.springframework.util.ReflectionUtils; * @author Dave Syer * @since 1.1.0 */ -public class ConfigurationBeanFactoryMetaData implements BeanFactoryPostProcessor { +public class ConfigurationBeanFactoryMetadata implements BeanFactoryPostProcessor { private ConfigurableListableBeanFactory beanFactory; - private final Map beans = new HashMap<>(); + private final Map beansFactoryMetadata = new HashMap<>(); @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) @@ -51,7 +52,7 @@ public class ConfigurationBeanFactoryMetaData implements BeanFactoryPostProcesso String method = definition.getFactoryMethodName(); String bean = definition.getFactoryBeanName(); if (method != null && bean != null) { - this.beans.put(name, new MetaData(bean, method)); + this.beansFactoryMetadata.put(name, new FactoryMetadata(bean, method)); } } } @@ -59,7 +60,7 @@ public class ConfigurationBeanFactoryMetaData implements BeanFactoryPostProcesso public Map getBeansWithFactoryAnnotation( Class type) { Map result = new HashMap<>(); - for (String name : this.beans.keySet()) { + for (String name : this.beansFactoryMetadata.keySet()) { if (findFactoryAnnotation(name, type) != null) { result.put(name, this.beanFactory.getBean(name)); } @@ -73,29 +74,29 @@ public class ConfigurationBeanFactoryMetaData implements BeanFactoryPostProcesso return (method == null ? null : AnnotationUtils.findAnnotation(method, type)); } - private Method findFactoryMethod(String beanName) { - if (!this.beans.containsKey(beanName)) { + public Method findFactoryMethod(String beanName) { + if (!this.beansFactoryMetadata.containsKey(beanName)) { return null; } - final AtomicReference found = new AtomicReference<>(null); - MetaData meta = this.beans.get(beanName); - final String factory = meta.getMethod(); - Class type = this.beanFactory.getType(meta.getBean()); - ReflectionUtils.doWithMethods(type, (method) -> { - if (method.getName().equals(factory)) { + AtomicReference found = new AtomicReference<>(null); + FactoryMetadata metadata = this.beansFactoryMetadata.get(beanName); + Class factoryType = this.beanFactory.getType(metadata.getBean()); + String factoryMethod = metadata.getMethod(); + ReflectionUtils.doWithMethods(factoryType, (method) -> { + if (method.getName().equals(factoryMethod)) { found.compareAndSet(null, method); } }); return found.get(); } - private static class MetaData { + private static class FactoryMetadata { private final String bean; private final String method; - MetaData(String bean, String method) { + FactoryMetadata(String bean, String method) { this.bean = bean; this.method = method; } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessor.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessor.java index 35c5377629b..09773d807c3 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessor.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessor.java @@ -63,7 +63,7 @@ public class ConfigurationPropertiesBindingPostProcessor private static final Log logger = LogFactory .getLog(ConfigurationPropertiesBindingPostProcessor.class); - private ConfigurationBeanFactoryMetaData beans = new ConfigurationBeanFactoryMetaData(); + private ConfigurationBeanFactoryMetadata beans = new ConfigurationBeanFactoryMetadata(); private BeanFactory beanFactory; @@ -88,7 +88,7 @@ public class ConfigurationPropertiesBindingPostProcessor * Set the bean meta-data store. * @param beans the bean meta data store */ - public void setBeanMetaDataStore(ConfigurationBeanFactoryMetaData beans) { + public void setBeanMetadataStore(ConfigurationBeanFactoryMetadata beans) { this.beans = beans; } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessorRegistrar.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessorRegistrar.java index 87ac7cccf3e..c21b418635e 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessorRegistrar.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/properties/ConfigurationPropertiesBindingPostProcessorRegistrar.java @@ -44,10 +44,10 @@ public class ConfigurationPropertiesBindingPostProcessorRegistrar BeanDefinitionRegistry registry) { if (!registry.containsBeanDefinition(BINDER_BEAN_NAME)) { BeanDefinitionBuilder meta = BeanDefinitionBuilder - .genericBeanDefinition(ConfigurationBeanFactoryMetaData.class); + .genericBeanDefinition(ConfigurationBeanFactoryMetadata.class); BeanDefinitionBuilder bean = BeanDefinitionBuilder.genericBeanDefinition( ConfigurationPropertiesBindingPostProcessor.class); - bean.addPropertyReference("beanMetaDataStore", METADATA_BEAN_NAME); + bean.addPropertyReference("beanMetadataStore", METADATA_BEAN_NAME); registry.registerBeanDefinition(BINDER_BEAN_NAME, bean.getBeanDefinition()); registry.registerBeanDefinition(METADATA_BEAN_NAME, meta.getBeanDefinition()); }