临时属性设置

不修改application.yml文件即可修改端口号等信息

java -jar xxx.jar --server:port=8080

将启动端口临时设置为8080,其中server.port为properties文件中的书写格式

如需修改多个属性,使用空格分割即可

java -jar xxx.jar --server.port=8080 --spring.datasource.druid.password=12345

注意属性加载时的顺序和属性覆盖问题

Spring属性文档

image-20230112104951455

临时属性会从启动类中的String[] args传递进入SpringApplication.run()方法,因此可以直接在启动类的main方法中直接对args数组赋值实现修改参数。

同理若不想程序接收临时参数,可以删除run()方法中的args

可以在启动boot程序时断开读取外部临时配置对应的入口,也就是去掉读取外部参数的形参

image-20230112111129646

不同环境间配置文件切换

在配置文件所在目录创建config文件夹,将欲切换的配置文件放在config目录中

  • config目录中的文件级别高于默认的配置文件级别。
  • 默认配置文件与config中配置文件冲突的部分执行config的内容,缺失的部分则会合并使用。

例如两配置文件都配置了端口,默认文件为80,config中配置文件为8080。默认配置文件仅配置了数据库,config中配置文件仅配置了MyBatis。启动后的结果为:端口为8080,数据库和MyBatis配置均生效

配置文件分类

  1. SpringBoot中的四级配置文件

一级:config/application.yml(级别最高)

二级:application.yml

三级:classpath:config/application.yml

四级:classpath:application.yml(级别最低)

  1. 作用
  • 一级与二级用于系统打包后的通用属性,一级常用于运维经理进行线上整体项目部署方案调控
  • 三级与四级用于系统开发阶段设置通用属性,三级常用于项目经理进行整体项目属性调控

自定义配置文件

在配置文件处创建自定义的配置文件后在**应用程序参数/Program arguments(临时属性)**选择使用自定的配置(如下图)

image-20230112114653416

也可以使用类路径--spring.config.name=classpath:/test.yml

说明

  • 单服务器项目:自定义配置文件需求较低
  • 多服务器项目:使用自定义配置文件需求较高,一般将所有配置放在一个目录中进行统一管理
  • 基于SpringCloud技术所有配置文件由配置中心进行管理,动态加载配置信息

多环境开发

yml下单文件实现多环境配置切换

在一般的项目开发中会有不同的运行环境,如生产环境、开发环境、测试环境等

# 选择应用哪个环境
spring:
  profiles:
    active: pro
    
    
# 该分割线上方为公共配置,不随选择的环境改变
---
# 生产环境
spring:
  on-profiles: pro # 设置环境名称
server:
  port: 8080
---
# 开发环境
spring:
  on-profiles: dev
server:
  port: 80
---
# 测试环境
spring:
  on-profiles: test
server:
  port: 81

yml下多文件环境配置切换

使用多文件可以解决密码暴露的问题

  1. 根据环境创建多个yml配置文件:applicatioin-dev.yml、application-pro.yml等
  2. 在application.yml中使用spring.profiles.active指定使用的配置文件

基本使用方式同上,仅是将分割线改为了不同文件,application.yml内指定配置文件和公共配置

properties下多文件配置切换

同yml,仅书写格式改为properties格式

根据功能对配置文件进行拆分

有时会需要根据功能或模块对配置文件进行拆分

  • 创建yml文件:application-devDB.ymlapplication-devRedis.yml
  • 在主配置文件里使用spring.profiles.include进行加载
spring:
	profiles:
		include: devDB,devRedis

或者使用环境组(SpringBoot 2.4以后),环境组可以根据active自动选择相应的配置文件组进行加载

spring:
	profiles:
		actice: dev
		group:
			"dev": devDB,devRedis
			"pro": proDB,proRedis