开发阶段
SpringBoot本身对项目的多环境配置已经做了非常友好的支持了,我们只需按照SpringBoot的约定去做就好。首先我们都知道,SpringBoot的默认配置文件是application.yml
。
配置多个环境只需要将默认配置文件复制几份,然后将文件名按照application-环境名.yml
改为相应的名称,比如:
- 测试环境:
application-dev.yml
- 生成环境:
application-prod.yml
我们可以将多个环境相同的配置写在application.yml
默认配置文件中,然后不同环境的配置写在各自的文件中,比如各种服务的连接信息等。
编辑好配置文件之后,我们需要在默认的配置文件中声明让哪种环境生效
# 激活指定配置文件 spring: profiles: active: prod
注意这里的名称只需要填写application-环境名.yml
配置文件的环境名
部分即可。
举例
首先我创建了一个测试项目,创建了默认的配置文件application.yml
。然后我也创建了application-dev.yml
和application-prod.yml
,并做了以下配置
application.yml
server: servlet: context-path: /moti-graph port: 8081 # 激活指定配置文件 spring: profiles: active: prod
application-dev.yml
spring: neo4j: uri: bolt://localhost:7687 authentication: username: neo4j password: neo4j
application-prod.yml
spring: neo4j: uri: bolt://47.106.183.193:7687 authentication: username: neo4j password: 12345
可以看到,我这里指明生效的是application-prod.yml
,之后我们启动项目,在控制台就可以看到这句话
如果配置生效的是其他环境的配置,那么在这里也会相应的打印出环境名称
发布阶段
当项目需要打包发布到服务器上的时候,打包的结果首先默认会根据你在application.yml
声明生效的环境,所以打包发布的时候可以先确认一下是否将默认配置文件中的环境配置为生产环境。
使用Maven打包,默认会将配置文件打包到jar包内部。可以直接使用java -jar XXX.jar
的方式启动项目
如果想要切换环境,可以直接在命令中添加参数--spring.profiles.active=环境名
java -jar --spring.profiles.active=dev moti-graph-0.0.1-SNAPSHOT.jar
当然也可以在启动项目的时候指定外部的配置文件,同样需要在命令中添加参数即可
我在项目外部创建了一个配置文件如下
server: servlet: context-path: / port: 8888
使用下面的命令启动项目
java -jar moti-graph-0.0.1-SNAPSHOT.jar --spring.config.location=/Users/moti/Desktop/application.yml
当然,项目真正发布的时候肯定不是直接使用这种简单粗暴的java -jar
方式,一般都会有专门的人写shell脚本,然后通过脚本来实现启动、停止、重启等操作。