主要是下面这个配置
--spring.config.location
-spring.config.location=...
举个例子:
CONFIG_FILES="--spring.config.location=file:$BASE_PATH/application.yaml,file:$BASE_PATH/application-dev.yaml"
是 Spring Boot 应用在启动时指定配置文件路径 的一种方式。
🔍 逐部分解释:
1. --spring.config.location=...
这是 Spring Boot 启动参数,用于告诉程序从哪个位置加载配置文件。默认情况下,Spring Boot 会从 classpath:/application.properties
或 .yaml
读取配置,但使用这个参数可以自定义配置文件路径。
2. file:$BASE_PATH/application.yaml,file:$BASE_PATH/application-dev.yaml
-
file:
前缀:表示这是一个 文件系统路径,而不是类路径(classpath)。 -
$BASE_PATH
:是一个环境变量或脚本变量,代表你项目或配置文件所在的目录。 -
application.yaml
:主配置文件,通常放一些通用配置。 -
application-dev.yaml
:开发环境的配置文件,可能会覆盖主配置中的某些值(如数据库地址、端口等)。
两个配置文件用逗号分隔,Spring Boot 会按照顺序加载,后面的文件可以覆盖前面的配置。
✅ 作用总结:
该变量用于启动 Spring Boot 应用时指定:
-
从
$BASE_PATH
目录下加载两个配置文件 -
文件是:
application.yaml
和application-dev.yaml
-
后加载的文件会 覆盖前面文件中相同 key 的配置
全部配置:
#!/bin/bash
set -e
DATE=$(date +%Y%m%d%H%M)
# 基础路径(绝对路径)
BASE_PATH=/opt/service/mall
# 服务名称。同时约定部署服务的 jar 包名字也为它。
SERVER_NAME=hywl-server
# 环境
PROFILES_ACTIVE=dev
# 配置文件路径
CONFIG_FILES="--spring.config.location=file:$BASE_PATH/application.yaml,file:$BASE_PATH/application-dev.yaml"
# heapError 存放路径
HEAP_ERROR_PATH=$BASE_PATH/heapError
# JVM 参数
JAVA_OPS="-Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$HEAP_ERROR_PATH"
# SkyWalking Agent 配置
#export SW_AGENT_NAME=$SERVER_NAME
#export SW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.0.84:11800
#export SW_GRPC_LOG_SERVER_HOST=192.168.0.84
#export SW_AGENT_TRACE_IGNORE_PATH="Redisson/PING,/actuator/**,/admin/**"
#export JAVA_AGENT=-javaagent:/work/skywalking/apache-skywalking-apm-bin/agent/skywalking-agent.jar
# 停止:优雅关闭之前已经启动的服务
function stop() {
echo "[stop] 开始停止 $BASE_PATH/$SERVER_NAME"
PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')
# 如果 Java 服务启动中,则进行关闭
if [ -n "$PID" ]; then
# 正常关闭
echo "[stop] $BASE_PATH/$SERVER_NAME 运行中,开始 kill [$PID]"
kill -15 $PID
# 等待最大 120 秒,直到关闭完成。
for ((i = 0; i < 120; i++))
do
sleep 1
PID=$(ps -ef | grep $BASE_PATH/$SERVER_NAME | grep -v "grep" | awk '{print $2}')
if [ -n "$PID" ]; then
echo -e ".\c"
else
echo '[stop] 停止 $BASE_PATH/$SERVER_NAME 成功'
break
fi
done
# 如果正常关闭失败,那么进行强制 kill -9 进行关闭
if [ -n "$PID" ]; then
echo "[stop] $BASE_PATH/$SERVER_NAME 失败,强制 kill -9 $PID"
kill -9 $PID
fi
# 如果 Java 服务未启动,则无需关闭
else
echo "[stop] $BASE_PATH/$SERVER_NAME 未启动,无需停止"
fi
}
# 启动:启动后端项目
function start() {
# 开启启动前,打印启动参数
echo "[start] 开始启动 $BASE_PATH/$SERVER_NAME"
echo "[start] JAVA_OPS: $JAVA_OPS"
echo "[start] JAVA_AGENT: $JAVA_AGENT"
echo "[start] PROFILES: $PROFILES_ACTIVE"
# 开始启动
nohup java -server $JAVA_OPS $JAVA_AGENT -Dapp.home=$BASE_PATH -jar $BASE_PATH/$SERVER_NAME.jar --spring.profiles.active=$PROFILES_ACTIVE $CONFIG_FILES > nohup.out 2>&1 &
echo "[start] 启动 $BASE_PATH/$SERVER_NAME 完成"
}
# 部署
function deploy() {
cd $BASE_PATH
# 第一步:停止 Java 服务
stop
# 第二步:启动 Java 服务
start
}
deploy