在SpringBoot项目的生命周期中,存在不同的环境,例如开发时的环境,测试时的环境,交付使用后的生产环境,每种环境的配置可能不一样,这种情况下可以通过多环境配置实现不同环境的快速切换。
针对不同环境制定不同名称的配置文件,里面放置不同环境下所需的配置项,然后在主配置文件中选择其中一个配置文件作为当前使用的配置。
1.创建SpringBoot项目,添加spring-boot-starter-web依赖
2.创建多个配置文件,每个配置文件的格式:application-{profile}.yml,其中{profile}是对应环境的标识
补充:常用的配置文件:
? ? ? ? ? ? ? ? 开发环境:application-dev.yml
? ? ? ? ? ? ? ? 测试环境:application-test.yml
? ? ? ? ? ? ? ? 生产环境:application-prod.yml
#application-dev.yml配置文件
db:
url: mysql://192.168.1.10:3306/db1
user: dev
password: 123
#application-test.yml配置文件
db:
url: sqlserver://192.168.1.30:8002/db3
user: test
password: 123456
#application-prod.yml配置文件
db:
url: oracle://192.168.1.20:9000/db2
user: prod
password: 111
3.选择环境:将application.properties配置文件修改为application.yml,使用以下代码选择伤处的一个环境(active为profile所进行的命名)
spring:
profiles:
#active中的值为对应环境的标识
active:dev
4.创建控制器TestController进行测试,测试不同环境时加载不同的数据库连接信息
package com.example.chap1.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@Value("${db.url}")
private String url;
@Value("${db.user}")
private String userName1;
@Value("${db.password}")
private String password;
//测试开发环境
@GetMapping("/test")
public String test(){
String str="<h1>当前环境连接的数据库URL:"+url+"</h1>";
str+="<h1>数据库用户:"+userName1+"</h1>";
str+="<h1>数据库密码:"+password+"</h1>";
return str;
}
}
在项目开发过程中,如果代码修改了,需要进行重新启动项目后修改才可以生效,但使用热部署则无须重新是手动启动应用程序
1.在IDEA中进行自动构建项目的配置,选择File->Settings->Build,Execution,Deployment->Complier,然后勾选右侧部分的Build project automatically
2.在pom.xml文件中添加devtools依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
3.在application.yml文件中添加配置
spring:
devtools:
restarts:
enabled:true
所有步骤完成后重新启动一次项目,以后当程序代码有修改就会触发热部署,无需手动启动程序就会有效果