Spring Boot 配置 jar 包外面的 Spring Properties 文件
2022/10/15 4:23:59
本文主要是介绍Spring Boot 配置 jar 包外面的 Spring Properties 文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、概述
Properties 文件是我们可以用来存储项目特定信息的常用方法。理想情况下,我们应该将其保留在 jar 包之外,以便能够根据需要对配置进行更改。
在这个教程中,我们将研究在 Spring Boot 应用程序中从 jar 外部位置加载 Properties 文件的各种方法。
二、使用默认位置
按照惯例,Spring Boot 按以下优先顺序在四个预定位置查找外部化配置文件 — application.properties 或 application.yml :{#crayon-5c73a186c8530009937282}
- 当前目录的 /config 子目录
- 当前目录
- 一个类路径 /config 包
- 类路径根
因此,在 application.properties 中定义并放置在当前目录的 /config 子目录中的属性将被加载。 这也会在发生冲突时覆盖其他位置的属性。
三、使用命令行
如果上述约定对我们不起作用,我们可以直接在命令行中配置位置:
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"
四、使用环境变量
现在假设我们不能更改启动命令。
很棒的是 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
请注意,仍将加载默认文件。但是环境特定的属性文件优先以防发生属性冲突。
- 使用应用程序属性
如我们所见,我们必须在应用程序启动之前定义 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
- 以编程方式
如果我们想要编程访问,我们可以注册一个 PropertySourcesPlaceholderConfigurer bean:
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer(); properties.setLocation(new FileSystemResource("/Users/home/conf.properties")); properties.setIgnoreResourceNotFound(false); return properties; }
在这里,我们使用 PropertySourcesPlaceholderConfigurer 从自定义位置加载属性。
七、从 Fat 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>
在这个例子中,我们过滤掉了 conf.properties 文件,使其不包含在生成的 jar 中。
八、小结
本文展示了 Spring Boot 框架本身如何为我们处理 externalized configuration
通常,我们只需要将属性值放在正确的文件和位置。但我们也可以使用 Spring 的 Java API 进行更多控制。
与往常一样,示例的完整源代码可在 GitHub 上 获得。
这篇关于Spring Boot 配置 jar 包外面的 Spring Properties 文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?
- 2024-05-30java excel上传--poi
- 2024-05-30安装笔记本应用商店的pycharm,再安排pandas等模块,说是没有打包工具?
- 2024-05-29java11新特性