Spring Boot应用程序中加载jar外部位置属性文件

1.概述

属性文件是一种常见的方法,可用于存储特定于项目的信息。 理想情况下,应该将其保留在jar包外部,以便能够根据需要更改配置。

接下来通过各种方式从Spring Boot应用程序中jar外部的位置加载属性文件。

2.使用默认位置

按照惯例,Spring Boot按照以下优先级顺序在4个预定的位置中寻找一个外部化的配置文件– application.properties或application.yml:

  • 当前目录的/config子目录
  • 当前目录
  • 类路径/config包
  • 类路径根

加载冲突时,优先级高的会覆盖优先级低的。

3.使用命令行

如果上述约定对不起作用,还可以直接在命令行中配置位置:

java -jar app.jar --spring.config.location=file:///Users/home/config/jdbc.properties

还可以传递一个文件夹位置,应用程序将在该文件夹中搜索文件:

java -jar app.jar --spring.config.name=application,jdbc --spring.config.location=file:///Users/home/config

并且,另一种方法是通过Maven插件运行Spring Boot应用程序。 在那里,可以使用-D参数:

mvn spring-boot:run -Dspring.config.location="file:///Users/home/jdbc.properties"

4.使用环境变量

如果,不能更改启动命令。 Spring Boot还将读取环境变量SPRING_CONFIG_NAME和SPRING_CONFIG_LOCATION:

export SPRING_CONFIG_NAME=application,jdbc
export SPRING_CONFIG_LOCATION=file:///Users/home/config
java -jar app.jar

请注意,默认文件仍将被加载。 但是,如果发生属性冲突,则特定于环境的属性文件优先。

5.使用应用程序属性

应用程序启动之前定义spring.config.name和spring.config.location属性,因此在application.properties文件(或YAML对应文件)中使用它们将无效。

Spring Boot修改了2.4.0版本中属性的处理方式,并与此更改一起,团队引入了一个新属性,该属性允许直接从应用程序属性中导入其他配置文件:

spring.config.import=file:./additional.properties,optional:file:/Users/home/config/jdbc.properties

6.以编程方式

编程方式,注册PropertySourcesPlaceholderConfigurer Bean:

@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer properties = 
      new PropertySourcesPlaceholderConfigurer();
    properties.setLocation(new FileSystemResource("/Users/home/conf.properties"));
    properties.setIgnoreResourceNotFound(false);
    return properties;
}

在这里,使用了PropertySourcesPlaceholderConfigurer从自定义位置加载属性。

7.从Jar包中排除文件

Maven Boot插件将自动将src/main/resources目录中的所有文件包含到jar包中。

如果不希望文件成为jar的一部分,可以通过简单的配置将其排除在外:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/conf.properties</exclude>
            </excludes>
        </resource>
    </resources>
</build>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值