springboot项目如何将配置文件外挂

简介: springboot项目如何将配置文件外挂

为什么要将配置文件外挂

因为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文件,因为他的优先级最高


相关文章
|
5天前
|
Java 应用服务中间件 Maven
Spring Boot项目打war包(idea:多种方式)
Spring Boot项目打war包(idea:多种方式)
19 1
|
5天前
|
Java Linux
Springboot 解决linux服务器下获取不到项目Resources下资源
Springboot 解决linux服务器下获取不到项目Resources下资源
|
5天前
|
Java API Spring
SpringBoot项目调用HTTP接口5种方式你了解多少?
SpringBoot项目调用HTTP接口5种方式你了解多少?
112 2
|
5天前
|
前端开发 JavaScript Java
6个SpringBoot 项目拿来就可以学习项目经验接私活
6个SpringBoot 项目拿来就可以学习项目经验接私活
43 0
|
5天前
|
前端开发 Java 关系型数据库
SpringBoot+MyBatis 天猫商城项目
SpringBoot+MyBatis 天猫商城项目
64 1
|
5天前
|
Java Maven 微服务
springboot项目开启远程调试-jar包
springboot项目开启远程调试-jar包
26 0
|
4天前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
|
3天前
|
前端开发 JavaScript Java
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)五(前端页面
|
5天前
|
消息中间件 JSON Java
RabbitMQ的springboot项目集成使用-01
RabbitMQ的springboot项目集成使用-01
|
5天前
|
Java
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
springboot项目出现Exception in thread “main“ java.lang.NoClassDefFoundError: javax/servlet/Filter
17 0