根据官方文档上面来说,属性的配置可以在好多地方,加载的优先级按如下的顺序来分:
1:有使用devtools,devtools 全局设置的属性(用户目录 ~/.spring-bootdevtools.properties)
2:测试类的@TestPropertySource注解
3:测试类的属性@SpringBootTest#properties注解
4:命令行参数(启动springbot项目的时候设置在命令行的参数)
5: 来自SPRING_APPLICATION_JSON中的属性(嵌入到环境变量中的内联JSON或系统属性)。
6:ServletConfig初始化参数
7:ServletContext初始化参数
8:JNDI参数 Java:comp/env
9:Java系统属性 System.getProperties()
10:操作系统的环境变量
11:RandomValuePropertySource配置的属性random.*
12:jar包外部的applictaion-{profile}.properties,applictaion-{profile}.yml配置文件
13:jar包内部的applictaion-{profile}.properties,applictaion-{profile}.yml配置文件
14:jar包外部的applictaion.properties,applictaion.yml配置文件
15:jar包内部的applictaion.properties,applictaion.yml配置文件
16:@Configuration类上的 @PropertySource注解指定的配置文件
17:默认属性: SpringApplication.setDefaultProperties
对于我们开发来说,最常用的就是.propertes和.yml文件了。今天说一下这些配置所在的位置不同,优先级也会不同的问题。
一:对于applictaion-{profile}.properties,applictaion-{profile}.yml和applictaion.properties,applictaion.yml文件来说
它们的优先级,无论文件在那个位置(resource,resource/config,jar包的当前目录下,jar包下面的config文件夹下)都是applictaion-{profile}.properties,applictaion-{profile}.yml的优先级高。
二:对于外部和内部来说,都会有一个config的文件或者没有,最好还是加上因为这样文件多了可以分不同的文件内容管理,对于config内部的和外部的同名的文件,config内部的文件优先级高,注意:是同名的文件,因为这还要注意第一条的内容。
对于jar来说是同样的。