注意:1:此注解只适合项目有一个属性文件,如果大型项目用到了多个属性文件,需要另做处理,需指定@ConfigurationProperties读取的属性文件!
@ConfigurationProperties(prefix = "dolphin", locations = "classpath:dolphin.properties")
2:默认读取的是properties文件,可能有的项目配置的yml格式,所以要注意符合的变化点要编程冒号!
@ConfigurationProperties(ignoreUnknownFields = false, prefix = "ftp:client")
最近在项目中做一个ftp自动上传下载文件的功能,学习之余就用到了@ConfigurationProerties。首先在properties文件中加入如下配置信息
然后写一个实体类,用于存储映射的信息,并加上注解@ConfigurationProerties和@Component,当然也可以通过@Bean注入的。
参数一:value:
前缀,用于识别properties文件里需要映射的内容,如果拿ftp地址例子来讲,就是映射的属性host加上前缀ftp.client后即是ftp.client.host的内容
参数二:prefix:
前缀,用于识别properties文件里需要映射的内容,如果拿ftp地址例子来讲,就是映射的属性host加上前缀ftp.client后即是ftp.client.host的内容
参数三:ignoreUnknownFields:
映射properties的字段中如果夹杂着未知的字段,将被忽略。例如:当配置文件中有一个或多个属性未绑定到实体类时或属性名字出错或已被删除了,这时候对于实体类,properties里的属性是未知的。这种情况我们希望程序启动失败,这时候就将此参数设置为false即可
参数四:ignoreInvalidFields:
指示绑定到此对象时应忽略无效字段。根据所使用的活页夹,Invalid表示无效,通常这表示无效类型错误的字段(或不能强制转换为正确类型的字段)。(默认为false):如properties的数字属性绑定到实体类字符类型的变量上。这时候我们期望程序启动失败,设置false即可!
参数五:ignoreNestedProperties:
标记当绑定到这个对象字段的名字中带有句号(即".")时应该被忽略。默认false。就可以理解为properties属性里有多余的字符.
参数六:exceptionIfInvalid:
该类用{@link Validated @Validated}注释,验证失败,则应引发异常,如果设置为false,验证错误将被吞噬。它们会被记录下来,但是没有传播到调用者。(默认为true)
先来看一个Springboot中的properties文件和对应YAML文件的对比:
可以明显的看到,在处理层级关系的时候,properties需要使用大量的路径来描述层级(或者属性),比如environments.dev.url和environments.dev.name。其次,对于较为复杂的结构,比如数组(my.servers),写起来更为复杂。而对应的YAML格式文件就简单很多:
可以直观的看到,YAML使用冒号加缩进的方式代表层级(属性)关系,使用短横杠(-)代表数组元素。
经过这个示例的演示,可以很明显的看到YAML针对properties文件的优异之处。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)