@ConfigurationProperties注解的使用经验
开发时遇到The Element [] were left unbound. 问题,记录一下解决过程
项目想使用springboot方便的properties文件配置功能,先介绍一下使用方式:
使用方式
现在Applcaition类入口添加@ConfigurationProperties
,并传入想要自动绑定配置的类,例如:
@SpringBootApplication
@EnableConfigurationProperties({AliyunCsClientConfig.class, DataSourceConfig.class})
public class Jishiv3UserApplication extends SpringBootServletInitializer {
...
}
在想要使用自动绑定的类上,使用@ConfigurationProperties(prefix = "xxx", ignoreUnknownFields = false)
注解标注配置文件的前缀和是否忽略不能解析的属性接着在类中的属性名就可以配置想要绑定的变量名。例如:
@Setter
@Configuration
@ConfigurationProperties(prefix = "aliyun", ignoreUnknownFields = false)
public class AliyunCsClientConfig {
private String region;
private String ramAk;
private String ramAs;
...
}
相应的,我们的配置文件:
# applicaton.properties
...
aliyun.region = cn-hangzhou
aliyun.ramAk = xxx
aliyun.ramAs = yyy
..
可以看到${prefix}.${property}的变量,直接可以映射到想要自动绑定的类中。这里绑定的规则时宽松绑定,及下环线驼峰命名都会进行统一。
需要注意的点
我们配置类想要绑定的属性一定要带上Setter方法,不然会报错The Element [xxx] were left unbound. 问题。
参考
下面这篇文章讲自动绑定的原理,很详细: