ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-14 16:01:09  阅读:257  来源: 互联网

标签:优先级 SpringBoot 笔记 properties application JVM password 环境变量


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

将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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有