其他分享
首页 > 其他分享> > SpringBoot学习笔记(八)——外部配置及其优先级

SpringBoot学习笔记(八)——外部配置及其优先级

作者:互联网

现在我们用最原始的方式来进行属性绑定。

将service类的代码修改如下:

@Component
@ConfigurationProperties
public class UserService {
    private String password;
    public String test() {
        return password;
   }
    // setter getter
}

我们有五种方法来设置属性的值。

方法一:

application.properties中配置
password=in_properties

方法二:

删掉application.properties⽂件,新建application.yml
password:in_yml
如果同时存在application.properties和application.yml,application.properties的优先级更⾼.

方法三:

假如在JVM环境变量中配置,如果是通过java命令运⾏,就是-Dpassword=zhouyu123456jvm 最后password取到的值为JVM环境变量中的值。 我们在操作系统的环境变量中设置,设置完IDEA重启才能⽣效。

方法四:

操作系统环境变量中配置:

最后结果仍然是JVM环境变量中的值,那如果把JVM中的环境变量中配置的删除掉,就能获取掉操作系 统环境变量中所配置的值了 所以,JVM环境变量优先级 > 操作系统环境变量 > application.properties > application.yml

方法五:

还可以通过命令⾏参数来设置值: 相当于:java -jar ZhouyuSpringBoot-Teacher-1.0-SNAPSHOT.jar --password=1111 这种⽅式的优先级⾼于JVM环境变量优先级 所以 命令⾏参数 > VM环境变量优先级 > 操作系统环境变量 > application.properties > application.yml

其它方式优先级

除了这⼏种配置参数之外,还有很多其他⽅式,优先级从低到⾼为: 1. SpringBoot默认值,通过SpringApplication.setDefaultProperties所设置的 2. 在@Configuration配置类上通过@PropertySource注解引⼊的properties⽂件,注意在Spring容器 刷新之前这种配置是不会⽣效的,所以通过这种⽅式所配置的loggin.*,spring.main.*的配置项在 容器启动过程中是不会⽣效的。 3. Config data a. 同⼀个Jar包内的application.properties和YAML b. 同⼀个Jar包内的application-{profile}.properties and YAML c. jar包外的application.properties and YAML d. jar包外的application-{profile}.properties and YAML 4. 操作系统环境变量 5. JVM环境变量 6. ServletContext初始化参数 7. ServletConfig初始化参数 8. 嵌⼊在环境变量中的⾏内JSON,⽐如- Dspring.application.json='{"password":"zhouyu123456json"}' 9. 命令⾏参数 10. 测试环境 11. Devtools全局设置

对配置文件的查找

对于application.properties and application.yaml⽂件,Spring Boot会(优先级从低到⾼): 1. 先从classpath下找   a. classpath根⽬录   b. classpath下的config⽬录 2. 应⽤启动时的当前⽬录   a. 当前⽬录   b. 当前⽬录下的/config⼦⽬录   c. /config⼦⽬录下的⼦⽬录(这个⼦⽬录名字随便叫,只要⾥⾯有application.properties andapplication.yaml⽂件就可以) 默认会找名字叫做application的⽂件,我们可以通过--spring.config.name=myproject换⼀个名字    

标签:优先级,SpringBoot,笔记,properties,application,JVM,password,环境变量
来源: https://www.cnblogs.com/worthmove/p/16693354.html