springboot 区分不同环境配置

一般来说,项目开发分为开发环境(dev)测试环境(test)预生产环境(pre)生产环境(prod)。不同环境之间的配置存在一定的差异,我们需要根据不同的部署环境切换配置文件,下面来说一下如何区分不同环境进行配置。

配置文件准备

准备下图对应的application-*.properties文件。

  • application.properties: 公共配置
  • application-dev.properties: 开发环境配置
  • application-test.properties: 测试环境配置
  • application-prod.properties: 生产环境配置

springboot 区分不同环境配置_第1张图片

pom.xml配置


    
        src/main/resources
        
            **/*.properties
            **/*.yml
            **/*.xml
        
        
        true
    

application.properties

# 此时配置为开发环境
spring.profiles.active=dev

# 此时配置为测试环境
spring.profiles.active=test

# 此时配置为生产环境
spring.profiles.active=prod

上面的配置需要我们在不同环境的时候修改对应的值,这样来说非常的不方便,此时我们可以通过变量的方式进行配置,下面我们进行修改。

pom.xml中添加


    
 
        dev
        
            dev
        
    
    
 
        test
        
            test
        
    
    
 
        prod
        
            prod
        
    

application.properties修改为

# 此时通过env来区分不同环境
spring.profiles.active=@env@

这时我们在IDEA右侧看到如下:

在这里我们可以选择对应的环境

springboot 区分不同环境配置_第2张图片

此时我们已经可以通过切换Profiles来切换环境了。但是这种情况下只能通过运行启动类的方式进行启动,像这样:

springboot 区分不同环境配置_第3张图片

这样的话才可以应用到Profiles选中的值。

spring-boot:run方式启动

此时不能应用到IDEA右侧选中的Profiles的环境值。


  • mvn spring-boot:run -P dev

我们需要在命令后添加指定的环境,像这样:mvn spring-boot:run -P dev指定以dev的环境进行启动,其中-P指定pom.xml中对应的profiles的值。此时application.properties配置文件不再生效。


springboot1.x启动

  • mvn spring-boot:run -Drun.profiles=dev

springboot2.x启动

  • mvn spring-boot:run -Dspring-boot.run.profiles=test

运行jar包

java -jar -Dspring.profiles.active=test demo.jar

# 或者

java -jar --spring.profiles.active=test demo.jar

你可能感兴趣的:(springboot)