Springboot通过profiles切换不同环境使用的配置

文章目录

  • 简介
  • 1.通过分隔符隔离
  • 2.通过使用不同的配置文件区分
  • 3.测试

简介

一个项目从开发到上线一般要经过几个环境, dev测试环境-uat预生产环境-prod生产环境,每个环境的使用的数据库或者配置不同,这时候可以通过下面两种方式区分配置,达到快速切换的效果。

1.通过分隔符隔离

  • 1.在application.yml配置文件中可以通过 - - - 分隔不同环境的配置
  • 2.在隔离的配置中通过spring.profiles定义当前这段配置的环境名称,下面定义了dev和prod两个环境
spring:
  profiles:
    #选择指定的环境
    active: dev

#-------------  dev配置  ---------------
---
spring:
  profiles: dev

version: 1.0.1

#-------------  prod配置  ---------------
---
spring:
  profiles: prod

version: 1.0.0

2.通过使用不同的配置文件区分

文件名的定义规则是: application-xxx.yml , xxx表示环境名称,为了兼容上面的分割符定义的两个环境,这里也创建了dev和prod两个环境的配置文件,两种方式可以混合使用,建议配置项多的时候还是用配置文件区分开。
Springboot通过profiles切换不同环境使用的配置_第1张图片
只定义了一个spring.application.name属性,prod环境名称为test-prod,dev环境名称为test-dev
Springboot通过profiles切换不同环境使用的配置_第2张图片

3.测试

@RestController
public class TestController {

    @Value("${spring.application.name}")
    public String appName;

    @Value("${version}")
    public String version;

    @GetMapping
    public String test() {
        return "appName="+appName+" , version="+version;
    }
    
}

Springboot通过profiles切换不同环境使用的配置_第3张图片
修改配置文件spring.profiles.active=prod再进行测试可以看到两种配置都生效了。
Springboot通过profiles切换不同环境使用的配置_第4张图片

Springboot通过profiles切换不同环境使用的配置_第5张图片

线上配置
在线上运行jar包的时候可以通过 --spring.profiles.active传入动态参数覆盖配置文件里的选项

java -jar xxx.jar --spring.profiles.active=prod

你可能感兴趣的:(spring,boot,后端,java)