为什么要将配置文件外挂
因为springboot项目一般打出来的是jar包,如果要对里面的配置做修改,会比较麻烦,所以需要将配置文件外挂,方便操作哦
怎么做呢
我们先看一个常见的springboot项目的配置文件结构:
分为四个配置文件:
application.yml 表示主配置文件
application-dev.yml 表示本地
application-prod.yml 表示生产
application-test.yml 表示测试环境
外挂配置文件的思路就是(划重点)
在启动jar包的命令里面指定,需要跑的是哪一个配置文件,然后将该文件进行外挂即可,听起来有点晦涩难懂,下面看具体操作
演示
现实工作中,我们会把项目打成jar包,然后放到对应的linux服务器目录里面,一般会写一个脚本,用来方便的启动和停止jar包
第一步:将项目打成jar包,这个就不过多赘述了,因为不是本章讲解的重点
第二步:将jar包放到指定目录,
第三步:将外挂配置文件和jar包放在同级目录,
第四步:编写启动脚本,具体如下
#!/bin/sh PIDFILE=hidbm.pid if [ -f "$PIDFILE" ] && kill -0 $(cat "$PIDFILE"); then echo "hidbm is already running!" exit 1 fi rm -f nohup.out nohup java -jar hidbm.jar --spring.profiles.active=prod > ./run.log 2>&1 & echo $! > $PIDFILE echo "start succeed!"
重点主要就是这一句
nohup java -jar hidbm.jar --spring.profiles.active=prod > ./run.log 2>&1 &
第五步:顺便把停止脚本也贴出来吧
#!/bin/sh PIDFILE=hidbm.pid echo "pid file is $PIDFILE" if [ ! -f "$PIDFILE" ] || ! kill -0 "$(cat "$PIDFILE")"; then echo "process not running..." else echo "stopping process..." PID="$(cat "$PIDFILE")" kill -9 $PID rm -f "$PIDFILE" echo "stop succeed!" fi
至此,外挂配置,大功告成,我们看一下最终的结构
bd-test-4:/opt/hidbm/hidbm-cloud # ll total 90300 -rw-r--r-- 1 root root 310 Jun 25 10:45 application-prod.yml -rw-r--r-- 1 root root 92426578 Jun 25 10:46 hidbm.jar -rw-r--r-- 1 root root 410 Jun 25 10:51 start.sh -rw-r--r-- 1 root root 272 Jun 25 10:51 stop.sh bd-test-4:/opt/hidbm/hidbm-cloud #
总结
1、我们将application-prod.yml文件提取到了最外面,和项目jar包同级
2、在启动脚本里面指定需要跑的是application-prod.yml这个文件
nohup java -jar hidbm.jar --spring.profiles.active=prod > ./run.log 2>&1 &
3、当项目启动的时候,springboot会默认先找同级的application-prod.yml文件,因为他的优先级最高