Spring Boot 自动配置的Bean提供了300多个用于微调的属性,这些属性可以通过在环境变量、java的系统属性、JNDI(Java Naming and Directory Interface)、命令行参数或者属性文件里进行配置,以下已设置服务器端口号server.port=9080进行说明。
(1)命令行参数
$ java -jar ***-0.0.1-SNAPSHOT.jar --server.port=9080
(2)java:comp/env里的JNDI属性
(3)JVM系统属性
(4)操作系统的环境变量,例如在linux服务中:
$ export server_port = 9080
(5) 应用程序内的application.properties 或者application.yml文件中,以及应用程序以外的application.properties 或者application.yml。在程序内外同时存在相同名称的配置文件时,生效的顺序是怎样的呢?
外置 | 在相对于应用程序运行目录的/config子目录里 |
外置 | 在应用程序运行的目录里 |
内置 | 在config包内 |
内置 | 在classpath根目录里 |
按照表格的优先级进行排序,就是配置属性生效的顺序。
(6)通过@PropertySource标注的属性源
(7)默认属性
从(1)~(7)按照优先级由高到低进行排序,任何在高优先级中属性源都会覆盖低优先级属性源中相同属性名的属性
参考书籍:《Spring Boot 实战》作者:【美】Craig Walls 著 , 丁雪丰 译