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

 更新时间:2026年05月09日 14:52:12   作者:唐程程  
本文介绍了Spring Boot项目中如何将配置文件外置,不在JAR包中打包,而是从指定目录加载配置文件的方法,通过修改启动参数实现灵活修改配置

开发需求

把配置文件外置放到指定目录中,不打包进jar。Jar包启动时可从指定的目录中加载配置,实现可灵活修改配置的功能。

项目背景

配置文件是放在resources目录下,服务启动时会通过注解

@ImportResource(locations={"classpath*:xxx.xml"})

从classpath加载xml文件和application.properties,连带配置文件也一起打进jar包里。如果需要更换配置时,每次都需要重新打包部署,这样就太麻烦了。

项目结构如图所示:

需要了解的源码

首先要知道springboot是如何默认读取配置文件的,贴上一段ConfigFileApplicationListener 里的代码。

可以看到,有四种方式读取配置文件,优先级是从小到大,优先级最高的是file:./config/。

但以上方式都不符合我们开发需求,所以想要覆盖默认的加载路径,只需要一句命令行的命令: --spring.config.location

修改的地方

1.在桌面上新建一个目录 test,把resources下的所有配置文件转移到test;

2.服务启动类中,注解@ImportResource的值使用占位符代替:@ImportResource(value = {"${external.file.location}"})

3.在application.properties目录中配置该值,

4.把日志文件路径修改成绝对路径:

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

测试jar启动

1. 准备就绪之后,重新把项目打成jar包,maven clean package

2. 在jar包的目录下打开命令窗口,敲上下面的命令,jar包会从指定的目录中加载配置文件的,启动成功啦~

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中TimedCache缓存对象的详细使用教程

    Java中TimedCache缓存对象的详细使用教程

    TimedCache是一个泛型类,它的主要作用通常是在一定时间范围内对特定键值对进行缓存,并且能够根据设定的时间策略来自动清理过期的缓存项,本文给大家介绍了Java中TimedCache缓存对象的详细使用教程,需要的朋友可以参考下
    2024-12-12
  • 深入理解SpringMVC中央调度器DispatcherServlet

    深入理解SpringMVC中央调度器DispatcherServlet

    这篇文章主要介绍了SpringMVC核心之中央调度器DispatcherServlet的相关知识,包括SpringMVC请求处理过程及SrpingMVC容器和spring IOC容器关系,需要的朋友可以参考下
    2022-05-05
  • Spring jpa和mybatis整合遇到的问题解析

    Spring jpa和mybatis整合遇到的问题解析

    有朋友说jpa相比mybatis太难用,多表联合的查询写起来也比较费劲,所以便加入了mybatis的支持,在配置jpa时遇到各种问题,需要修改相关配置文件,下面小编给大家分享下修改配置文件的思路,感兴趣的朋友参考下
    2016-10-10
  • Java IO多路复用之select、poll、epoll示例详解

    Java IO多路复用之select、poll、epoll示例详解

    IO多路复用是解决高并发IO的核心技术,select、poll、epoll是Linux系统下三种主流的多路复用机制,这篇文章主要介绍了Java IO多路复用之select、poll、epoll的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2026-05-05
  • 基于SPRINGBOOT配置文件占位符过程解析

    基于SPRINGBOOT配置文件占位符过程解析

    这篇文章主要介绍了基于SPRINGBOOT配置文件占位符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • tomcat启动完成执行 某个方法 定时任务(Spring)操作

    tomcat启动完成执行 某个方法 定时任务(Spring)操作

    这篇文章主要介绍了tomcat启动完成执行 某个方法 定时任务(Spring)操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Netty如何设置为Https访问

    Netty如何设置为Https访问

    这篇文章主要介绍了Netty如何设置为Https访问,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java基于FFmpeg实现Mp4视频转GIF

    Java基于FFmpeg实现Mp4视频转GIF

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。本文主要介绍了在Java中如何基于FFmpeg进行Mp4视频到Gif动图的转换,感兴趣的小伙伴可以了解一下
    2022-11-11
  • java读取excel文件为base64实现方式

    java读取excel文件为base64实现方式

    文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意文件格式支持、流关闭、Base64编码方式选择及常见问题处理,如乱码、文件损坏等,同时建议优化性能时采用分块读取
    2025-09-09
  • 深入探索Spring AOP从原理到实战操作

    深入探索Spring AOP从原理到实战操作

    本文详细介绍了SpringAOP的基本概念、实现机制、核心术语及实战应用,SpringAOP通过动态代理机制,在运行时为目标对象创建代理,实现对方法的增强,本文探讨了SpringAOP的高级特性,并列举了日志记录、事务管理、权限控制和性能监控等应用场景,感兴趣的朋友跟随小编一起看看吧
    2025-12-12

最新评论