在Spring Boot中,将配置文件外置有多种方式,以下是常见的几种方法:
1. 命令行参数指定配置文件
bash
java -jar app.jar --spring.config.location=/path/to/application.properties
或指定多个配置文件:
bash
java -jar app.jar --spring.config.location=/path/to/application.properties,/path/to/application-dev.yml
2. 指定配置文件目录
bash
# 会加载该目录下的所有配置文件
java -jar app.jar --spring.config.location=file:/config/
3. 使用外部配置文件优先级顺序
Spring Boot按以下顺序加载配置(优先级从高到低):
-
命令行参数
-
当前目录下的
/config子目录 -
当前目录
-
classpath下的
/config包 -
classpath根目录
4. 推荐的项目结构
project-root/
├── app.jar # 打包后的jar文件
├── config/ # 外部配置文件目录(优先级最高)
│ ├── application.yml
│ ├── application-dev.yml
│ └── application-prod.yml
└── application.yml # 当前目录下的配置文件
5. 实际部署示例
创建部署脚本 start.sh:
bash
#!/bin/bash
# 应用名称
APP_NAME="your-app.jar"
# 配置文件目录
CONFIG_DIR="/app/config"
# 日志目录
LOG_DIR="/app/logs"
# 创建目录
mkdir -p ${CONFIG_DIR}
mkdir -p ${LOG_DIR}
# 启动应用
java -jar ${APP_NAME} \
--spring.config.location=file:${CONFIG_DIR}/ \
--logging.file.path=${LOG_DIR} \
--server.port=8080
7. Windows系统启动
bash
@echo off
java -jar app.jar --spring.config.location=file:.\config\
9. Spring Boot 2.4+ 配置新特性
使用 application.yml 和 application-{profile}.yml 组合:
bash
# application.yml
spring:
config:
import:
- optional:file:./config/[optional-file.properties]
- optional:file:./config/custom-config.yml
10. 生产环境最佳实践
bash
#!/bin/bash
# start-prod.sh
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
CONFIG_PATH="/opt/app/config"
LOG_PATH="/opt/app/logs"
nohup java ${JAVA_OPTS} \
-jar app.jar \
--spring.config.location=file:${CONFIG_PATH}/ \
--spring.profiles.active=prod \
--logging.file.path=${LOG_PATH} \
> ${LOG_PATH}/console.log 2>&1 &
注意事项:
-
路径格式:
-
Linux/Mac:
file:/absolute/path/或file:./relative/path/ -
Windows:
file:C:/path/或file:./path/
-
-
多配置文件:使用逗号分隔多个路径
-
配置加密:敏感信息建议使用加密配置或使用配置中心
选择适合你部署环境的方式,通常推荐使用独立的config目录来管理配置文件。