版权声明:如有转载-请加微信457556886告知下就可以 知识都是分享的 https://blog.csdn.net/wolf_love666/article/details/90905469
源码如下:
1、ConfigurationPropertiesAutoConfiguration
package org.springframework.boot.autoconfigure.context;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* 凡是带有
* {@ConfigurationProperties} beans实例开启自动配置.
* 自动绑定和校验带有{@ConfigurationProperties}.注解的bean实例
*/
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties
public class ConfigurationPropertiesAutoConfiguration {
}
2、ConfigurationProperties
package org.springframework.boot.context.properties;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
/**
* 外部配置注解
* 如果你想要绑定一些外部属性(例如properties文件)添加这个到类定义或者在@Configuration注解修饰的类中的@Bean修饰的方法
注意:与@Value注解修饰不同的是,SpEL表达式不能获取到,因为是外部参数传入的。
*/
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {
/**
* 属性名字的前缀对于绑定到这个对象是有效的。与 {prefix()}作用相同。
* 被一个或者多个点定义的前缀也是有效的,例如这种形式{ "acme.system.feature"}
* 返回绑定的这个属性名字前缀
*/
@AliasFor("prefix")
String value() default "";
/**
与上面作用相同
*/
@AliasFor("value")
String prefix() default "";
/**
当绑定到这个对象,无效的属性应该被忽略
无效意味着在绑定的过程中,类型错误的属性或者不能被转化为正确的类型
返回默认值false
*/
boolean ignoreInvalidFields() default false;
/**
当绑定到这个对象,未知的属性(错误的属性)应该被忽略,不在配置中的
返回默认值true
*/
boolean ignoreUnknownFields() default true;
}
3、