本文共 1730 字,大约阅读时间需要 5 分钟。
Spring Boot默认从 application.properties 获取配置,比如我们要配置一个user,首先在 application.properties 中对应 UserProperties 对象字段编写属性的 KV 值:
user.name=zhitaouser.age=27user.sex=manuser.desc=${user.name} is a ${user.sex}
这里也可以通过占位符,进行属性之间的引用。
编写duiying的UserProperties对象:
@Component@ConfigurationProperties(prefix = "user")public class UserProperties { private String name; private Integer age; private String sex; private String desc; public String getName() { return name; } public void setName(String name) { this.name = name; }/**getter setter方法省略**/ @Override public String toString() { return "UserProperties{" + "name='" + name + '\'' + ", age=" + age + ", sex='" + sex + '\'' + ", desc='" + desc + '\'' + '}'; }}
通过 @ConfigurationProperties(prefix = "user”) 注解,将配置文件中以 user前缀的属性值自动绑定到对应的字段中。同是用 @Component 作为 Bean 注入到 Spring 容器中。
如果使用yml文件,则是
## user属性user: name: zhitao age: 27 sex: man desc: ${user.name} is a ${user.sex}${home.city}
项目结构如图:
多场景配置问题:
很多场景的配置,比如数据库配置、Redis 配置、日志配置等。在不同的环境,我们需要不同的包去运行项目。所以看项目结构,有两个环境的配置:
Spring Boot 是通过 application.properties 文件中,设置 spring.profiles.active 属性,比如 ,配置了 dev ,则加载的是 application-dev.properties :
如下:application.properties 的配置是:
spring.profiles.active=test
那么读取的就是 application-test.properties 的配置
user.name=taotaouser.age=26user.sex=manuser.desc=${user.name} is a ${user.sex}
application-dev.properties 的配置为:
user.name=taouser.age=28user.sex=manuser.desc=${user.name} is a ${user.sex}
此时读取到的用户名字为taotao而不是tao。