spring boot 环境配置(profile)切换
概述
本文介绍spring boot项目中环境配置切换的过程。
在实际的项目开发中,经常需要不同的环境配置,如开发时不能直接连生产环境的数据库,而上线时就需要连生产环境的数据库。这就要求项目能够切换环境配置。
spring boot项目中,application.properties
是配置文件,实际上我们还可以引入不同环境的配置文件,如:application-dev.properties
,application-prod.properties
,通过指定spring.profiles.active
的值切换配置文件,比如在application.properties
中指定:
spring.profiles.active=xxx
就可加载application-xxx.properties
配置。
切换环境的常用方法
1.上面提到的application.properties
设置spring.profile.active
的值。
2.命令行中指定参数
通过指定jvm系统参数
java -jar -Dspring.profiles.active=prod springboot-profile-demo 0.0.1-SNAPSHOT.jar
通过指定应用参数
java -jar --spring.profiles.active=dev springboot-profile-demo 0.0.1-SNAPSHOT.jar
项目内容
创建一个简单的spring boot项目,引入不同的环境配置,用不同方法切换环境,访问接口打印当前环境。
要求
- JDK1.8或更新版本
- Eclipse开发环境
如没有开发环境,可参考前面章节:[spring boot 开发环境搭建(Eclipse)]。
项目创建
创建spring boot项目
打开Eclipse,创建spring boot的spring starter project项目,选择菜单:File > New > Project ...
,弹出对话框,选择:Spring Boot > Spring Starter Project
,在配置依赖时,勾选web
,完成项目创建。
项目配置
如下图,除了application.properties
,还添加了:
application-dev.properties
- 开发环境配置application-prod.properties
- 生产环境配置application-test.properties
- 测试环境配置
application.properties文件内容
## 生产/开发等环境配置, 加载不同的配置文件
spring.profiles.active=dev
## 服务器端口,默认是8080
server.port=8096
application-dev.properties文件内容
## profile 名称
profile.name=dev
application-prod.properties文件内容
## profile 名称
profile.name=prod
application-test.properties文件内容
## profile 名称
profile.name=test
代码实现
项目目录结构如下图,我们实现了一个接口,访问此接口打印当前环境名称。
HelloController类
通过@Value
注解读取profile.name
,赋给profileName
。访问/hello
接口打印当前环境名称。
@RestController
public class HelloController {
@SuppressWarnings("unused")
private static final org.slf4j.Logger log = LoggerFactory.getLogger(HelloController.class);
// 当前环境配置名称
@Value("${profile.name}") //读取当前环境配置名称
private String profileName;
@RequestMapping(value="/hello", method = RequestMethod.GET, produces="application/json")
public String hello() {
return "当前环境:" + profileName;
}
}
运行
修改application.properties文件中的spring.profiles.active
,加载对应的配置文件,然后访问接口/hello
## 生产/开发等环境配置, 加载不同的配置文件
spring.profiles.active=test
Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择:run as -> spring boot app
运行程序。 打开Postman访问接口,运行结果如下: