开发者在项目发布之前,一般需要频繁地在开发环境、测试环境以及生成环境之间进行切换,这个时候大量的配置需要频繁更改,例如数据库配置、redis中
配置、mongdb配置、jms配置等。Spring对此提供了解决方案(@Profile注解),Spring Boot则更进一步提供了更加简洁的解决方案,Spring Boot 中约定的不同
环境配置文件名称规则为 :application-{profile}.properties,profile占位符表示当前环境的名称,具体配置步骤如下
1. 创建配置文件
首先在resource目录下创建两个配置文件:
application-dev.propeties — 开发环境配置文件,内容如下:
server.port=8081
application-prod.properties — 生产环境配置文件,内容如下:
server.port=8082
application-test.properties — 测试环境配置文件,内容如下:
server.port=8083
application-uat.properties — 预发布环境配置文件,内容如下:
server.port=8084
这里为了简化问题且容易看到效果,两个配置文件主要修改了一下项目端口号。
2. 配置application.properties
配置内容如下:
spring.profiles.active=dev
这个表示使用application-dev.properties 配置文件启动项目,若将 dev 改为 test,则表示使用application-prod.properties启动项目。项目启动成功后,就可以通过相应的端口号进行访问了。
3. 在代码中配置
对于第 2 步在application.properties 中添加的配置,我们也可以在代码中添加配置来完成,在启动类的main方法上添加如下代码,可以替换第二步的配置:
//启动类
@EnableAutoConfiguration
@ComponentScan
//@Spring Boot Application 组合注解
pubic class App{
public static void main(String[] args){
//SpringApplication.run(App.class,args);
SpringApplicationBuilder builder = new SpringApplicationBuilder(App.class);
builder.applicaion().setAdditionalProfiles("prod");
builder.run(args);
}
}
4. 项目启动时配置
对于第 2 步和第 3 步提到的两种配置方式,也可以在将项目打包后启动时,在命令行动态指定当前运行环境,示例命令如下:
java -jar baby-3-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod