java指定配置文件启动_springboot启动时指定外部配置文件-boot设置

本文介绍了如何在SpringBoot应用中指定外部配置文件,避免将配置文件打包在jar中,提高运维便利性。通过java -jar命令行参数-Dspring.config.location指定配置文件路径,或者在代码中自动获取jar文件的目录并加载同级目录下的app.properties。这种方式允许在运行时轻松修改配置并重启应用生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot默认配置文件可以配置在resources文件夹中,文件名为application.properties或application.yml,

打包发布之后,以java -jar的形式去运行,因为配置文件也打包在了jar文件中,所以运维要修改配置什么的就不是很方便了,因此考虑将配置文件从jar包中抽出来,

可以在运行时候手动指定配置文件,比如 命令行中直接指定: java -jar -Dspring.config.location=D:\config\config.properties springbootrestdemo-0.0.1-SNAPSHOT.jar

但是这样还要去看路径,不同的服务器可能配置的路径不一样还得改,也挺麻烦的。

因此项目中做了一个约定:外部配置文件名称统一叫做app.properties,SpringBootApplication程序启动时,获取到当前执行程序的jar绝对目录路径,将app.proeprties跟要执行的jar文件放置到同级目录中,

当然也可以指定自己的目录,比如同级目录下新加个config文件夹统一放置配置文件也是可以的,这个主要决定于你想要从哪里加载配置文件了。

于是问题就变成了 获取当前执行的jar文件的目录路径了,这个也很简单啦,比如如下:

String path = ClassUtils.getDefaultClassLoader().getResource("").getPath();

获取到的路径在做一定处理就能得到jar文件所在目录了,这里要注意windows和linux之间的额路径差异了,可能需要根据不同的操作系统坐下兼容处理,不清除的可以百度下。

代码示例:

public static void main(String[] args) throws IOException {

String path = getRootPath();

System.out.println("working on " + path);

String filePath = path + "app.properties";

System.out.println("config file : " + filePath);

InputStream ism = new FileInputStream(filePath);

Properties properties = new Properties();

properties.load(ism);

SpringApplication app = new SpringApplication(VpnLandingApplication.class);

app.setDefaultProperties(properties);

app.run(args);

}

22222A307-0.jpg

2222261Z1-1.jpg

运行目录结构

这样就可以直接以 java -jar xxx.jar 来运行springboot应用程序了,加载的配置文件就是同级目录下的app.properties,如果要更新配置,直接修改app.properties文件,然后重新启动下就可以啦。

不知道有没有更好的方式呢,请朋友们告诉我吧、。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值