本文介绍spring boot项目中环境配置切换的过程。java
在实际的项目开发中,常常须要不一样的环境配置,如开发时不能直接连生产环境的数据库,而上线时就须要连生产环境的数据库。这就要求项目可以切换环境配置。mysql
spring boot项目中,application.properties
是配置文件,实际上咱们还能够引入不一样环境的配置文件,如:application-dev.properties
,application-prod.properties
,经过指定spring.profiles.active
的值切换配置文件,好比在application.properties
中指定:git
spring.profiles.active=xxx
就可加载application-xxx.properties
配置。github
1.上面提到的application.properties
设置spring.profile.active
的值。web
2.命令行中指定参数redis
经过指定jvm系统参数spring
java -jar -Dspring.profiles.active=prod springboot-profile-demo 0.0.1-SNAPSHOT.jar
经过指定应用参数sql
java -jar --spring.profiles.active=dev springboot-profile-demo 0.0.1-SNAPSHOT.jar
建立一个简单的spring boot项目,引入不一样的环境配置,用不一样方法切换环境,访问接口打印当前环境。shell
如没有开发环境,可参考前面章节:[spring boot 开发环境搭建(Eclipse)]。数据库
打开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
项目目录结构以下图,咱们实现了一个接口,访问此接口打印当前环境名称。
经过@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访问接口,运行结果以下: