Spring Boot提供了多种方式来配置应用程序的属性,其中最常见的是使用配置文件。Spring Boot支持多种类型的配置文件,包括.properties文件、.yaml文件、.yml文件等。这些配置文件可以用于设置应用程序的各种属性,如数据库连接、日志配置、端口号等。
不同的配置文件有一些区别,主要体现在语法上和文件格式上。以.properties文件和.yaml/.yml文件为例:
-
.properties文件:这是一种基于键值对的配置文件格式,使用等号(=)或冒号(:)将键和值分隔。示例:
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb
-
.yaml/.yml文件:这是一种基于缩进的配置文件格式,采用类似于Python的语法结构,通过缩进来表示层级关系。示例:
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/mydb
不同的配置文件具有不同的优先级,如果多个配置文件中存在同名的属性,优先级从高到低如下:
- 命令行参数:可以通过命令行参数来覆盖配置文件中的属性值。例如,
java -jar myapp.jar --server.port=9090
。 - 系统属性:可以通过在启动命令中使用
-D
参数来设置系统属性,这些属性会优先于配置文件中的属性。例如,java -Dserver.port=9090 -jar myapp.jar
。 - 环境变量:可以将配置属性存储在环境变量中,然后在配置文件中使用
${}
来引用。例如,server.port=${SERVER_PORT}
。 - 配置文件:配置文件是应用程序属性的默认来源,如果其他方式没有设置属性值,则使用配置文件中的值。
需要注意的是,Spring Boot会按照特定的顺序加载配置文件,优先级从高到低如下:
- 编译在应用程序中的默认属性(默认不可覆盖)。
- 通过
spring.config.name
命令行参数设置的特定名称的文件,例如--spring.config.name=myconfig
。 - 通过
spring.config.location
命令行参数设置的特定位置的文件,例如--spring.config.location=/opt/config/
。 - classpath下的application.yaml/application.yml文件。
- classpath下的application.properties文件。
以上是Spring Boot配置文件不同之处和优先级的简要介绍,具体情况还可以根据具体的应用场景来进行定制和调整。