0
点赞
收藏
分享

微信扫一扫

SpringBoot源码分析-@ConfigurationProperties如何生效

SpringBoot源码分析-@ConfigurationProperties如何生效_sed

查看@ConfigurationPropertis源码

/**
* Annotation for externalized configuration. Add this to a class definition or a
* {@code @Bean} method in a {@code @Configuration} class if you want to bind and validate
* some external Properties (e.g. from a .properties file).
*


* Note that contrary to {@code @Value}, SpEL expressions are not evaluated since property
* values are externalized.
*
* @author Dave Syer
* @see ConfigurationPropertiesBindingPostProcessor
* @see EnableConfigurationProperties
*/
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {

/**
* The name prefix of the properties that are valid to bind to this object. Synonym
* for {@link #prefix()}. A valid prefix is defined by one or more words separated
* with dots (e.g. {@code "acme.system.feature"}).
* @return the name prefix of the properties to bind
*/
@AliasFor("prefix")
String value() default "";

/**
* The name prefix of the properties that are valid to bind to this object. Synonym
* for {@link #value()}. A valid prefix is defined by one or more words separated with
* dots (e.g. {@code "acme.system.feature"}).
* @return the name prefix of the properties to bind
*/
@AliasFor("value")
String prefix() default "";

/**
* Flag to indicate that when binding to this object invalid fields should be ignored.
* Invalid means invalid according to the binder that is used, and usually this means
* fields of the wrong type (or that cannot be coerced into the correct type).
* @return the flag value (default false)
*/
boolean ignoreInvalidFields() default false;

/**
* Flag to indicate that when binding to this object unknown fields should be ignored.
* An unknown field could be a sign of a mistake in the Properties.
* @return the flag value (default true)
*/
boolean ignoreUnknownFields() default true;

}

只有prefix属性,看see到相关处理类

 * @see ConfigurationPropertiesBindingPostProcessor
 * @see EnableConfigurationProperties

ConfigurationPropertiesBindingPostProcessor源码

SpringBoot源码分析-@ConfigurationProperties如何生效_属性设置_02

属性设置

@Override
public void afterPropertiesSet() throws Exception {
// We can't use constructor injection of the application context because
// it causes eager factory bean initialization
this.beanFactoryMetadata = this.applicationContext.getBean(
ConfigurationBeanFactoryMetadata.BEAN_NAME,
ConfigurationBeanFactoryMetadata.class);
this.configurationPropertiesBinder = new ConfigurationPropertiesBinder(
this.applicationContext, VALIDATOR_BEAN_NAME);
}

postProcessBeforeInitialization方法

SpringBoot源码分析-@ConfigurationProperties如何生效_sed_03

 

SpringBoot源码分析-@ConfigurationProperties如何生效_sed_04

 

SpringBoot源码分析-@ConfigurationProperties如何生效_属性设置_05

 

SpringBoot源码分析-@ConfigurationProperties如何生效_sed_06

 

SpringBoot源码分析-@ConfigurationProperties如何生效_sed_07


举报

相关推荐

0 条评论