发布于2026-07-06 阅读(0)
扫一扫,手机访问
需求很直白:把配置文件从 jar 包内部解放出来,放到外部指定目录里,启动时从那个目录加载。这样环境切换、参数调整都不用重新打包部署,省事得多。
原来的做法是把配置文件塞在 resources 目录下,启动时靠 @ImportResource 注解从 classpath 加载 xml 和 application.properties,结果所有东西一股脑打包进 jar。每次想改个配置,都得重新编译打包、再部署,循环往复,效率低下。
项目结构大概长这样(原图保持不变):

先搞清楚 Spring Boot 默认是怎么找到配置文件的。看一段 ConfigFileApplicationListener 里面的代码:
// 代码片段(原内容保持不变)
从这段代码能看出,Spring Boot 提供了四种配置文件路径的优先级,从低到高分别是 file:./config/ 等(具体细节可参考官方文档)。但不管哪一种,都不符合我们“从自定义目录加载”的需求。要覆盖默认的加载路径,其实只需要一行命令参数:
--spring.config.location
具体的调整分几步走:
1. 创建外部配置目录
在桌面上新建一个 test 目录(路径可自定义),把原来的资源文件全部挪进去。
2. 修改注解使用占位符
启动类上的 @ImportResource 注解,原先直接指向 classpath 文件,改成通过占位符动态读取:
@ImportResource(value = {"${external.file.location}"})

3. 配置占位符的值
在 application.properties 里把这个占位符指向外部目录路径:

4. 日志文件路径也改绝对路径
比如日志配置文件的位置,直接写成绝对路径:
logging.config=C:/Users/arya/Desktop/test/log4j2-dev.xml
一切就绪后,重新打成 jar 包:
mvn clean package
然后在 jar 包所在目录打开命令行,执行以下命令,指定 Spring 的环境和配置路径:
ja va -jar test.jar --spring.profiles.active=dev --spring.config.location=C:/Users/arya/Desktop/test/

启动成功之后,可以看到日志和业务配置都从外部目录加载,后续修改配置只需改文件、重启服务即可,再也不需要重新打包部署了。
通过将配置外置并利用 --spring.config.location 参数,我们实现了在不重新打包的情况下灵活切换配置文件的需求。这个方法很适合多环境部署或需要频繁调整参数的场景,思路清晰、操作简单,可以快速落地。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8