SpringBoot读取外部配置文件的方法

本文详细介绍了SpringBoot项目中使用外部配置文件的各种方法,包括通过命令行参数、文件夹优先级、WAR包配置等手段,实现了配置文件的灵活读取与应用。

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

内部读取配置文件

相信很多SpringBoot初学者一般对于SpringBoot读取配置文件的方式最为熟悉的就是内部配置文件直接使用application.properties里面的属性然后利用@Configuration这个注解直接用@Value读取配置文件信息。
在这里插入图片描述
在这里插入图片描述
但是往往在实际开发中,项目真正上线和部署不太建议使用内部配置文件。
既然这样,那么我们必须要知道如何使用外部配置文件灵活启动项目。

外部Jar包方式读取配置文件 --启动命令读取

使用命令 java -jar springBootDemo-0.0.1-SNAPSHOT.jar --spring.config.location=D:\Jayson\config\application.properties (配置文件路径)
在这里插入图片描述像这样命令启动只能指定一个配置文件,暂时还未知怎样指定一个目录。

外部Jar包方式读取配置文件 --优先级最高的方式

如果把配置文件建立一个文件夹,全部放入一个文件夹下,然后与jar包同级,直接启动。则是会最优先级读取这个配置文件。当然,如果优先级最高的会覆盖了他内部的或者优先级比他低的配置文件,但是如果没有,他还是会读取到内部或者那些优先级低的配置文件,也就是说互补。如果最高级有那就使用最高级的,没有则继续读取下级的。
在这里插入图片描述

外部Jar包方式读取配置文件 --优先级第二级的方式

同样类似于以上的配置方式,不同之处在于不用建立文件夹,而且这样显得紊乱,优先级最低的当然也就是上述部分说的在内部配置的方式
在这里插入图片描述

外部War包方式读取配置文件

SpringBoot的war包打包方式相信多数小伙伴也是会了,即是移除内部的tomcat,打包方式的war标签原本是jar的改为war。
在这里插入图片描述
很多人的打成war包都要加上maven的这个插件,但是我这个项目移除掉了也没有影响,正常启动。具体原因没有深究。小伙伴们还是百度吧。不行就加上,行的话就不用加
在这里插入图片描述
接下来主要就是怎么把配置文件加载到spring boot中了,我这里主要就是重写configure的方法,然后找到配置文件路径,然后读到springboot中就可以同样直接使用@Value直接获取配置文件值了。

package com.company.project;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableAsync;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;

@EnableAsync
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        String configDir = System.getProperty("configDir");
        System.out.println("-------------------------------------"+configDir);
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream(new File(configDir + "\\application.properties")));
            properties.load(new FileInputStream(new File(configDir + "\\application-dev.properties")));
            System.getProperties().putAll(properties);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return builder.sources(Application.class);
    }
}

但是还有一点就是配置文件是怎么读的,路径在哪呢?
在这里插入图片描述
在这里插入图片描述
在中(catalina.bat)中108行编辑一下即可
set title=iline-web
set JAVA_OPTS=%JAVA_OPTS% -DconfigDir=D:\jayson\config -Dredis.config.type=file
set JRE_HOME=D:\Program Files\Java\jdk1.8.0_181\jre
setlocal

如此,war包读取外部配置文件的方式即已完成。如果是多个配置文件,就如上所示
多拼接
多拼接一个配置文件名即可

关注微信关注公众号分享更多知识与内容!

在这里插入图片描述

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放学不要跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值