启动jar包时加载外部配置文件

本文介绍如何在jar包运行时从外部myApplication.properties文件加载配置,避免频繁打包。通过bat脚本启动,优先级按外部>类路径配置。

前言

当我们把代码打包成jar包时,properties文件是写死在jar包中的,不可修改。一旦我们要修改properties文件,就要再重新打包成jar包,再发布。非常麻烦!可不可以在外部配置properties,启动jar包时加载这个配置文件呢?有!

解决方案:

1.以Windows为例,准备一个你自己的jar包

2.在同目录下,创建一个myApplication.properties

内容如下:

# 这里书写规则跟正常的application.properties一样
server.port=9999

3.在同目录下,创建一个txt文件,最后把后缀改成.bat。作为启动jar包的脚本。

内容如下:

#启动jar包
#myApplication.properties是我们外部配置文件
#application.properties是我们resources下面的配置文件
#xxx是jar包的名字
java -jar -Dspring.config.location=myApplication.properties,classpath:application.properties, ./xxx.jar 

4.双击启动

你会发现,jar包加载了你的外部配置。

注意:优先加载外部文件的配置,类路径下的配置优先级最低。所以一旦有相同的属性被定义,程序会选择外部文件中的配置。(要是不以外部文件为准,我还写个锤子的外部配置)

在使用 Java 运行 JAR ,如果需要指定外部配置文件,可以通过多种方式实现,具体取决于应用程序如何加载配置文件。 ### 1. 使用命令行参数传递配置文件路径 最常见的方式是通过命令行参数将配置文件的路径传递给程序。例如,可以在运行 JAR 文件使用 `--config` 或 `-Dconfig.file` 参数来指定外部配置文件的位置: ```bash java -jar -Dconfig.file=/path/to/config.properties myapp.jar ``` 在程序中可以通过 `System.getProperty("config.file")` 来读取该路径并加载配置文件[^3]。 ### 2. 使用类路径加载配置文件外部路径) 如果程序使用 `ClassLoader.getSystemResourceAsStream()` 或 `new FileInputStream()` 来加载配置文件,则可以将配置文件放置在 JAR 外部,并通过相对路径或绝对路径进行访问。例如: ```bash java -jar myapp.jar --config ../config.properties ``` 在代码中可以这样读取: ```java String configPath = args[0]; // 假设第一个参数是配置文件路径 try (InputStream input = new FileInputStream(configPath)) { Properties prop = new Properties(); prop.load(input); } catch (IOException ex) { ex.printStackTrace(); } ``` ### 3. 使用环境变量或系统属性 可以通过 `-D` 参数定义系统属性,用于指示配置文件的路径: ```bash java -jar -Dapp.config=/path/to/config.properties myapp.jar ``` 在代码中通过以下方式获取: ```java String configPath = System.getProperty("app.config"); ``` ### 4. 使用外部配置目录 某些框架(如 Spring Boot)支持从特定目录加载配置文件,例如 `config` 子目录或当前目录下的配置文件。这种机制可以避免将配置文件JAR 中。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值