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

springboot 专栏收录该内容
1 篇文章 0 订阅

内部读取配置文件

相信很多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
    点赞
  • 7
    评论
  • 40
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 终极编程指南 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值