Browse Source
This commit reworks the configuration properties registrar to use RootBeanDefinition and a standard attribute rather than relying on a package private sub-class. This allows other components to inspect the metadata if necessary. Closes gh-27821pull/27660/head
7 changed files with 84 additions and 94 deletions
@ -1,56 +0,0 @@
@@ -1,56 +0,0 @@
|
||||
/* |
||||
* Copyright 2012-2020 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.boot.context.properties; |
||||
|
||||
import org.springframework.beans.factory.BeanFactory; |
||||
import org.springframework.beans.factory.config.BeanDefinition; |
||||
import org.springframework.beans.factory.support.GenericBeanDefinition; |
||||
|
||||
/** |
||||
* {@link BeanDefinition} that is used for registering |
||||
* {@link ConfigurationProperties @ConfigurationProperties} value object beans that are |
||||
* bound at creation time. |
||||
* |
||||
* @author Stephane Nicoll |
||||
* @author Madhura Bhave |
||||
* @author Phillip Webb |
||||
*/ |
||||
final class ConfigurationPropertiesValueObjectBeanDefinition extends GenericBeanDefinition { |
||||
|
||||
private final BeanFactory beanFactory; |
||||
|
||||
private final String beanName; |
||||
|
||||
ConfigurationPropertiesValueObjectBeanDefinition(BeanFactory beanFactory, String beanName, Class<?> beanClass) { |
||||
this.beanFactory = beanFactory; |
||||
this.beanName = beanName; |
||||
setBeanClass(beanClass); |
||||
setInstanceSupplier(this::createBean); |
||||
} |
||||
|
||||
private Object createBean() { |
||||
ConfigurationPropertiesBean bean = ConfigurationPropertiesBean.forValueObject(getBeanClass(), this.beanName); |
||||
ConfigurationPropertiesBinder binder = ConfigurationPropertiesBinder.get(this.beanFactory); |
||||
try { |
||||
return binder.bindOrCreate(bean); |
||||
} |
||||
catch (Exception ex) { |
||||
throw new ConfigurationPropertiesBindException(bean, ex); |
||||
} |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue