为什么需要使用多环境配置
spring-boot项目只需要编译一次,使用不同的运行参数,就可以方便地在多种不同平台下部署,提高效率,减少出错
项目结构
多环境项目配置文件结果如下:
如果要支持多环境部署,需要在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
浏览器验证
注意:由于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