商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Jar启动实现从指定目录中读取配置文件过程

Jar启动实现从指定目录中读取配置文件过程

  发布于2026-07-06 阅读(0)

扫一扫,手机访问

开发需求

需求很直白:把配置文件从 jar 包内部解放出来,放到外部指定目录里,启动时从那个目录加载。这样环境切换、参数调整都不用重新打包部署,省事得多。

项目背景

原来的做法是把配置文件塞在 resources 目录下,启动时靠 @ImportResource 注解从 classpath 加载 xml 和 application.properties,结果所有东西一股脑打包进 jar。每次想改个配置,都得重新编译打包、再部署,循环往复,效率低下。

项目结构大概长这样(原图保持不变):

Jar启动实现从指定目录中读取配置文件过程

需要了解的源码

先搞清楚 Spring Boot 默认是怎么找到配置文件的。看一段 ConfigFileApplicationListener 里面的代码:

// 代码片段(原内容保持不变)

从这段代码能看出,Spring Boot 提供了四种配置文件路径的优先级,从低到高分别是 file:./config/ 等(具体细节可参考官方文档)。但不管哪一种,都不符合我们“从自定义目录加载”的需求。要覆盖默认的加载路径,其实只需要一行命令参数:

--spring.config.location

修改的地方

具体的调整分几步走:

1. 创建外部配置目录
在桌面上新建一个 test 目录(路径可自定义),把原来的资源文件全部挪进去。

2. 修改注解使用占位符
启动类上的 @ImportResource 注解,原先直接指向 classpath 文件,改成通过占位符动态读取:

@ImportResource(value = {"${external.file.location}"})

Jar启动实现从指定目录中读取配置文件过程

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

Jar启动实现从指定目录中读取配置文件过程

4. 日志文件路径也改绝对路径
比如日志配置文件的位置,直接写成绝对路径:

logging.config=C:/Users/arya/Desktop/test/log4j2-dev.xml

测试jar启动

一切就绪后,重新打成 jar 包:

mvn clean package

然后在 jar 包所在目录打开命令行,执行以下命令,指定 Spring 的环境和配置路径:

ja va -jar test.jar --spring.profiles.active=dev --spring.config.location=C:/Users/arya/Desktop/test/

Jar启动实现从指定目录中读取配置文件过程

启动成功之后,可以看到日志和业务配置都从外部目录加载,后续修改配置只需改文件、重启服务即可,再也不需要重新打包部署了。

总结

通过将配置外置并利用 --spring.config.location 参数,我们实现了在不重新打包的情况下灵活切换配置文件的需求。这个方法很适合多环境部署或需要频繁调整参数的场景,思路清晰、操作简单,可以快速落地。

本文转载于:https://www.jb51.net/program/363557u9r.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注