摘要:Spring Boot的配置文件是Spring Boot项目中比较重要的实现部分,主要的作用就是为应用程序提供各种的参数配置,例如常见的数据库连接、端口号、日志级别等配置信息都可以通过配置文件来进行配置。Spring Boot中提供了如下的两种配置文件配置方式
Spring Boot的配置文件是Spring Boot项目中比较重要的实现部分,主要的作用就是为应用程序提供各种的参数配置,例如常见的数据库连接、端口号、日志级别等配置信息都可以通过配置文件来进行配置。Spring Boot中提供了如下的两种配置文件配置方式。
application.properties:基于键值对的配置方式,类似于传统的Java 配置文件。application.yml:基于YAML(YAML Ain't Markup Language)的配置方式,相比properties格式,YAML格式更易于阅读和维护。下面我们就来详细介绍一下Spring Boot的配置文件。
在默认情况下Spring Boot采用 application.properties 或 application.yml,来作为默认配置文件,位于项目路径的 src/main/resources 目录下,这些配置文件会在项目创建的时候,由编辑器自己进行创建。当然如果我们需要适配不同环境的配置文件,还可以通过如下的方式来适配不同的开发环境。
application-dev.properties 或 application-dev.yml(开发环境)application-prod.properties 或 application-prod.yml(生产环境)上面我们提到了,可以通过Profiles来区分不同环境下的配置文件,例如在开发环境使用application-dev.yml在生产环境使用application-prod.yml,那么我们到底如何去调整这个配置呢?
在默认情况下我们可以通过如下的方式来进行配置。
# application.propertiesspring.profiles.active=dev或者
# application.ymlspring:profiles:active: dev我们可以通过创建多个不同的配置文件来进行不同环境的配置,然后再启动项目的时候就可以根据 spring.profiles.active 的值来自动加载对应环境的配置文件了。
在Spring Boot配置文件的使用中是存在一定的配置文件加载顺序的,后加载的配置文件会覆盖之前加载的配置文件的配置内容,如下所示,是Spring Boot配置文件的加载顺序,从上到下,从高到底。
命令行参数:通过命令行传递的参数,优先级最高。SPRING_CONFIG_NAME 环境变量:可以通过该环境变量指定配置文件的名称。application.properties 或 application.yml 文件:在 src/main/resources 中找到的配置文件。application-{profile}.properties 或 application-{profile}.yml 文件:根据当前激活的 Spring Profile(比如 dev、prod 等)加载对应的配置。JVM 系统属性:通过 -D 传递的系统属性,如 -Dserver.port=8081。默认值:Spring Boot 中一些默认的配置值。有兴趣的读者可以自己尝试修改一下这些配置文件,来看看具体的执行效果。
配置文件的外部化有了配置文件的加载顺序之后,我们就可以将配置文件提取到Spring Boot应用程序包的外面,这样方便在不同的环境中通过不同的配置来调整启动配置内容,就不需要重复进行打包了,如下所示。提供了几种实现方案。
使用命令行参数
java -jar myapp.jar --server.port=8082使用环境变量
export SERVER_PORT=8082java -jar myapp.jar使用外部配置文件
Spring Boot 也支持从外部路径加载配置文件,比如:
java -jar myapp.jar --spring.config.location=file:/path/to/config/application.properties通过以上的三种方式都可以实现将配置内容提取到Spring Boot包外,这样在项目启动的时候,就可以通过外部配置文件来启动项目不需要重新进行打包,提高了项目的灵活性。
Spring Boot 的配置文件是Spring Boot应用程序的核心技术之一,通过配置文件开发者可以灵活地控制应用程序的各种行为。通过合理组织和使用配置文件,可以使得应用更容易进行维护和部署。Spring Boot 还提供了多种配置方式,如属性文件、YAML 文件、外部化配置等,以便在不同的环境中使用不同的配置,从而适应不同的需求。
来源:从程序员到架构师