SpringBoot配置文件的加载优先级顺序
application.properties加载
Spring Boot启动会扫描以下位置的application.properties或者application.yml文件作为Spring Boot的默认配置文件
file:/config/file:/classpath:/config/classpath:/以上顺序按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级的配置内容会覆盖低优先级配置的内容,其中配置文件中的内容是互补配置,即
存在相同的配置内容,高优先级的内容会覆盖低优先级的内容存在不同的内容的时候,高优先级和低优先级的配置内容取并集我们也可以通过spring.config.location来改变默认的配置,具体做法就是项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置,指定配置文件和默认加载的配置文件共同起作用称为互补配置
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties
02外部配置的加载顺序
Spring Boot也可以从以下位置加载配置: 优先级从高到低顺序,高优先级覆盖低优先级,如有不同内容,高优先级和低优先级形成互补配置
命令行参数命令行参数的优先级是最高的,假定内部配置的最高优先级配置文件配置的启动端口号是8081,启动命令行参数如以下设置:
java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --server.port=8089
那么启动的端口就改成了8089,命令行可以把项目的所有的配置选项全部都改掉
来自java:comp/env的JNDI属性java系统属性(System.getProperties())操作系统环境变量RandomValuePropertySource配置的random.*属性值jar包外部的application-{profile}.properties或者application.yml(带spring.profile)配置文件jar包内部的application-{profile}.properties或者application.yml(带spring.profile)配置文件jar包外部的application.properties或者application.yml(不带spring.profile)配置文件jar包内部的application.properties或者application.yml(不带spring.profile)配置文件@Configuration注解类上的@PropertySource通过SpringApplication.setDefaultProperties指定的默认属性看了以上的配置顺序,下面来思考一个问题,如果我要配置的东西太多,而且项目已经打包,我命令行重新配置参数太麻烦,应该怎么办?
想了解更多精彩内容,快来关注计算机java编程