【SpringBoot】 配置文件的拆分

SpringBoot 2020 核心知识点整理!

在实际开发过程中 生产环境测试环境 有可能是不一样的,因此将生产中的配置和测试中的配置拆分开,是非常必要的;在 springboot 中也提供了配置文件拆分的方式。

这里以生产中项名名称不一致为例,假设:

  • 生产中的项目名为:cmzf
  • 测试中的项目名为:springboot
  • 端口同时为:8080

application.yml

  • 主配置文件:application.yml
# 用来书写生产和测试相同的的配置
spring:
  profiles:
    active: dev
server:
  port: 8080 #生产和测试为同一个端口
  • 生产配置文件:application-pord.yml
server:
  servlet:
	context-path: /cmfz
  • 测试配置文件:application-dev.yml
server:
  servlet:
	context-path: /springboot

yml 多文档块方式

server:
  port: 8081
spring:
  profiles:
    active: prod

---
server:
  port: 8083
spring:
  profiles: dev

---
server:
  port: 8084
spring:
  profiles: prod  #指定属于哪个环境

application.properties

  • 主配置文件application.properties
# 延迟加载
spring.main.lazy-initialization=true
# 使用测试环境配置
spring.profiles.active=dev

测试配置文件application-dev.properties

server.servlet.context-path=/springboot
server.port=8989

生产配置文件application-prod.properties

server.servlet.context-path=/cmfz
server.port=8080

激活指定 profile(3种方法)

1、在配置文件中指定 spring.profiles.active=dev
2、命令行:运行 jar 包时后面写上:--spring.profiles.active=dev

java -jar hello_springboot-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

可以直接在测试的时候,配置传入命令行参数:
在这里插入图片描述
​3、虚拟机参数;

-Dspring.profiles.active=dev

在这里插入图片描述

配置文件的加载位置

springboot 启动会扫描以下几个位置的 配置文件:

  • –file:./config/
  • –file:./
  • –classpath:/config/
  • –classpath:/

优先级由高到底,高优先级的配置会覆盖低优先级的配置;

SpringBoot 会从这四个位置全部加载主配置文件;互补配置

我们还可以通过 spring.config.location 来改变默认的配置文件位置;
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;
指定配置文件和默认加载的这些配置文件共同起作用形成互补配置;

java -jar hello_springboot-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章