SpringBoot 多环境用命令行启动,不修改配置文件

在真实的项目开发中,往往是有3套开发环境,本地+测试+生产

至少也需要2套环境 本地+生产

在本地开发的时候,springboot 可以在配置文件中添加多个属性文件,比如

application.properties,
application-dev.proterties
application-test.proterties
application-prod.proterties

其中application.properties,是总的通用的配置文件

剩余的配置文件配置 填写不同环境对应的 数据库,日志路径 等信息

然后application.properties中有这么一个配置

spring.profiles.active=dev

在测试环境运行就改成test,生产就改成prod

发布版本的时候,程序员先在本地进行打包,

打成jar包

上测试了,就用压缩软件把jar包打开,修改spring.profiles.active=test

上生产环境了.就用压缩软件把jar包打开,修改spring.profiles.active=prod

这种方式 太过于麻烦,浪费了大量的时间, 把时间都花在了不该花的地方

其实有一种很简单的方法,就可以解决这个问题,大大提高开发效率,

奈何没人知道,心痛,重复机械的劳动,有可能还会出现字符编码不对,压缩包修改文件导致jar 包不能启动,必须在打包的时候先指定spring.profiles.active=xxx 环境打包

下面分享提高效率的方式

1.新建一个springboot 工程,web项目

2.新建2个文件

application-dev.proterties
application-test.proterties

首先是application-dev.proterties,里面写上

a=hello

然后是application-test.proterties,里面写上

a=world

在总的属性文件 application.properties, 写入

spring.profiles.active=dev

属性文件全部ok

下面是对属性文件进行读取,新建一个Controller

package com.example.multiennvi.controller;


import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
public class Test {

    @Value("${a}")
    private String  aa;

    @RequestMapping("/helllo")
    public String aa(){
        System.out.println(aa);
        return aa;
    }
}

属性文件会对a这个熟悉感值进行读取,

当我们进行本地开发的时候,由于总的属性文件 application.properties 里面配置的是dev 的环境,所以启

动的时候就是dev 里面的数据库啊,日志啊 等信息

下面就是开发好了,要上测试环境进行部署了,

以往这个时候,需要程序员手动修改 application.properties中 spring.profiles.active=test

然后打包,

打包好了 ,通过跳板机上传到 测试的linux跑 ,跑起来没问题了.

然后还会有生产环境,再去修改 spring.profiles.active=prod,然后在上传到生产服务器启动

3.正确的做法

首先到打包的目录下面
一般我们的启动方式是

java -jar xxxx.jar

这个时候我们需要在后面多加一点东西

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

只要把xxx 修改成对应的dev ,test或者prod 就可以了

就是这么的简单,提搞生产效率的利器命令

  1. 下面测试下

首先是指定dev 环境启动,由于总属性文件配置的是dev,所以不指定也是ok 的

SpringBoot 多环境用命令行启动,不修改配置文件_第1张图片

下面进行测试:

SpringBoot 多环境用命令行启动,不修改配置文件_第2张图片

读取的是hello

关掉,重新指定启动的环境为test

SpringBoot 多环境用命令行启动,不修改配置文件_第3张图片

下面进行测试

SpringBoot 多环境用命令行启动,不修改配置文件_第4张图片

读取的是world

很简单的一个命令,大大的提高 部署效率,省心,省力.

你可能感兴趣的:(springboot)