springboot多环境部署

版权声明:博主原创,未经允许不得转载。 https://blog.csdn.net/qq_31748587/article/details/88744506

正经学徒,佛系记录,不搞事情

前言

一般情况下,会因操作的用户不同而给项目配置不同的环境,比如“开发环境”,“测试环境”,“线上环境”,本文基于springboot将项目划分为多个配置,通过不同的命令生效不同的配置文件

正文

创建一个普通的springboot项目,添加三个yml后缀的文件,目录如下

#application.yml
server:
  port: 8088
spring:
  profiles:
    active: dev

#application-dev.yml        开发环境
system:
  serverName: dev_project

#application-prod.yml       线上环境
system:
  serverName: prod_project  
  • 文件命名的格式是固定的 application-{自定义}.yml
  • application.yml文件的 spring.profiles.active=自定义 是指定项目启动默认加载哪个配置文件,现在的配置是dev

创建TestController.java,通过@Value获取属性值,启动项目测试

@RestController
public class TestController {
    @Value("${system.serverName}")
    private String serverName;

    @GetMapping("/test")
    public String test(){
        return serverName;
    }
}

由此可见,使用了application-dev.yml配置文件

线上环境时,可通过 spring.profiles.active=自定义 覆盖默认的配置

如何编译、部署项目参考:https://www.cnblogs.com/ityouknow/p/6834287.html?utm_source=itdadao&utm_medium=referral

现在通过 spring.profiles.active 的配置生效application-prod.yml配置文件

输入命令启动项目

java -jar springboot-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

 测试结果:

扩展

yml和properties后缀文件的功能是一样的,只是编码的格式不一样

但是有一个问题:yml和properties配置文件同时存在时会是什么效果?

如下,同时存在application-dev.properties和application-dev.yml文件,那当以dev配置启动项目时,哪个文件会生效

经过测试,这里直接提供最终的结果:

当application-dev.properties和application-dev.yml文件同时存在,则properties文件的内容将会覆盖yml对应属性的内容,这里有一个关键词要注意,是覆盖“对应属性”,而不是整个文件覆盖,说明properties和yml并存时,springboot将会把两个配置文件的内容合并起来,且重复的属性将会使用properties文件。包括springcloud的配置中心功能,配置文件存入github,当properties和yml并存时也是如此效果。

猜你喜欢

转载自blog.csdn.net/qq_31748587/article/details/88744506