Spring:如何将属性文件提供给 Java.exe

Posted

技术标签:

【中文标题】Spring:如何将属性文件提供给 Java.exe【英文标题】:Spring : How to give properties file to Java.exe 【发布时间】:2017-11-28 23:19:55 【问题描述】:

我正在使用 Spring 开发 Java 应用程序。我已将某些属性存储在一个属性文件中,该文件被打包为一个 JAR。使用 @Value 注释在代码中读取属性。现在,当我部署 JAR 时,我想为其中一些属性提供新值。我知道我们可以将新属性值设为“-Dproperty-name=property-value”。但是有没有办法给一个新的属性文件本身作为输入,它有许多属性要一起覆盖?

谢谢 陈巴嘎

【问题讨论】:

【参考方案1】:

您可以拥有许多不同的属性文件,然后使用特定的系统参数加载。

@Configuration
@PropertySource(value = "classpath:/app.properties", "file:/$configLocation/app.properties", ignoreResourceNotFound = true)

public class AppConfig 

将您的默认 app.properties 添加到 /src/resources/app.properties

然后,当您启动 JVM 时,您可以覆盖

-DconfigLocation=/home/config

如果 configLocation 存在,它将首先选择默认属性,然后用文件中的属性覆盖。如果系统参数不存在,则不会归档文件并使用默认值。

更多示例请参见http://docs.spring.io/spring/docs/4.3.9.RELEASE/javadoc-api/org/springframework/context/annotation/PropertySource.html

【讨论】:

感谢 Essec。这就是我现在正在做的事情。但是当我执行 JAR 时,我需要覆盖其中的一些属性值。我想将所有这些属性放在一个文件中,并将该文件作为 JVM 的输入,而不是在执行 JAR 时将每个属性都作为 -D。 @ChenbagaMurugan 我不明白你的问题,现在看答案。在 spring 链接上也有很多这样的例子。

以上是关于Spring:如何将属性文件提供给 Java.exe的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 排除属性文件并在执行时将其提供给 jar

如果 Spring Boot 的属性文件中未提供占位符值,如何跳过?

spring boot 入门1-----如何使用@Value注解读取配置文件以及使用@ConfigrationProperties注解

如何从 Spring Boot Config Server 提供的其他属性文件中的 application.properties 获取密钥?

如何在 Spring Boot linux 中向类路径提供外部配置资源(数据库属性和 XML 文件)

Spring认证-Spring注入集合