文章目录
- 前言
- 实现原理
- 不同环境的配置文件
- 变更配置变量
前言
为实现快速搭建和开发,项目以Springboot框架搭建,springboot搭建的项目可以将项目直接打成jar包并运行,无需自己安装配置Tomcat或者其他服务器,是一种方便快捷的部署方式。
假设项目以最常规的方式打包成一个整体的jar包部署,即配置文件包含在jar包里,就会出现一个问题:项目运行过程中,要改动配置文件的话需要重新打包并部署。
如果将项目的配置文件提取到jar包外统一管理,这样只改动了配置文件重启下服务就可以了,无需重新构建部署。
实现原理
- Springboot的默认配置文件为:application.properties或者是application.yml
- 如果这两个配置文件都存在,不冲突的话,就互相补充。冲突的话,则properties优先级高。
根据yml配置文件加载原理,所有配置文件都会加载,高优先级的配置会覆盖低优先级的内容,且属性互补
Springboot配置文件加载优先级:
1.项目启动时通过命令的方式指定项目加载核心配置文件
2.Jar包外同级目录的config目录
3.Jar包外同级目录
4.jar包内classPath(即resources目录)的config目录
5.jar包内的classpath目录
不同环境的配置文件
当我们使用IDEA创建出一个Springboot项目上时,配置文件默认出现在classpath(也就是项目里的resources)目录下。使用多套配置环境,如图:
在application.yml中指定使用哪一个文件(开发用dev,测试环境用uat,正式环境用prod)
开发的时候,默认使用dev环境,端口为8080,即使发布也无需更改环境配置,下文讲解。
application.yml文件
spring:
profiles:
active: dev # 使用dev开发环境配置
server:
port: 8080
application-dev文件
# 开发环境
app:
env: dev
logging:
config: classpath:log4j2-dev.xml
application-uat.yml文件
# 测试环境
app:
env: uat
logging:
config: classpath:log4j2-uat.xml
以测试环境为例,当我们在测试环境运行jar包,指定uat环境启动jar包,使用以下命令,便可将配置环境切换为application-uat.yml文件:
java -jar demo.jar --spring.profiles.active=uat
指定启动端口为8081:
java -jar demo.jar --spring.profiles.active=uat --server.port=8081
以上这种指定配置文件的方式似乎能帮助我们更好的开发,却不能满足于正式环境的需求变动,我们所需的是动态修改配置文件的内容,从而快速的变更需求,那么就需要以下这种方式。
变更配置变量
还是在测试环境,以切换日志配置文件为例,将测试环境的日志配置文件切换为开发环境的配置文件。
写一个新的配置文件放在 config
文件夹:
config
文件夹如下:
application-uat.yml文件的内容如下:
logging:
config: classpath:log4j2-dev.xml
重启服务,运行命名参数为 --spring.profiles.active=uat
,测试服务器原来加载的日志配置文件log4j2-uat.xml
便变更为开发环境的配置文件 log4j2-dev.xml
。