为什么需要使用多环境配置

spring-boot项目只需要编译一次,使用不同的运行参数,就可以方便地在多种不同平台下部署,提高效率,减少出错

项目结构

多环境项目配置文件结果如下:

image
image

如果要支持多环境部署,需要在application.properties文件中添加一个属性:

spring.profiles.active=dev

该属性默认激活dev配置文件application-dev.properties,如果需要激活prod配置文件,
只需修改为:

spring.profiles.active=prod

application-dev.properties

envname=dev

application-prod.properties

envname=prod

UriController.java

package com.dennis.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.dennis.dao.AuthUriMapper;
import com.dennis.model.AuthUri;
@RestController
@RequestMapping({"/auth_uri"})
public class UriController {

    @Value(value="${envname}")
    private String envname;

    @RequestMapping(value="/envname")
    public String envname(){
        return envname;
    }

}

打包项目

mvn clean package

运行项目

java -jar spring-boot-mybatis-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

浏览器验证

image
image

注意:由于spring-boot 支持yaml的方式配置项目,如果要支持多环境配置,只需要把对应
的配置文件后缀名修改为yaml,内容为yaml格式即可

如我的配置如下:

application.yaml

mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  config-location: classpath:mapper/config/sqlMapConfig.xml
  type-aliases-package: com.dennis.model
spring: 
  datasource:
    url: jdbc:mysql://localhost:3306/dennis?useSSL=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: cculi
  profiles:
    active: dev

application-dev.yaml

envname: dev

application-prod.yaml

envname: prod