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 获取密钥?