当前位置: 首页 > 知识库问答 >
问题:

用外部属性重写spring-boot Application.properties

滕无尘
2023-03-14

我有一个spring-boot应用程序。我有3个属性文件:

jar外部的属性文件,位于Configurations/global.properties下的jar位置

jar外部的属性文件,位于Configurations/java.properties下的jar位置

问题是,我运行的是以下命令:

java -Dlogging.config=logback.xml -jar "myjar.jar" spring.config.location=classpath:/application.properties,file:./configurations/global.properties,file:./configurations/java.properties
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myApplication': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'Data.StoresDb.LakeConnectionString' in value "${Data.StoresDb.LakeConnectionString}"
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:405)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
        at org.springframework.beans.fa
@Value("${Data.StoresDb.LakeConnectionString}")
String dataLakeStoreDb;

在我的application.properties中,我没有data.storesdb.lakeConnectionString,但我在global.properties中有,我希望spring在尝试提供值data.storesdb.lakeConnectionString之前解析所有文件

共有1个答案

谭铭
2023-03-14

您可以将arg/value作为原始Java参数传递:

java -jar "myjar.jar" spring.config.location=...

该参数将出现在主类的String[]args中,但Spring环境将不知道这一点。
您必须在它前面加上--以使该参数是Spring环境感知的:

java -jar "myjar.jar" --spring.config.location=...

从正式文件来看:

或者作为另一种选择将其作为系统属性传递:

java -Dspring.config.location=... -jar "myjar.jar" 

请注意:Spring Boot 2中引入的Spring.config.location会将指定位置添加到默认位置,而Spring.config.addition-location则会重写默认位置。

 类似资料:
  • 问题内容: 在Swift中,定义公共模式的常规方式是什么,在该模式中,属性是外部只读的,但可以由拥有该属性的类(和子类)在内部进行修改。 在Objective-C中,有以下选项: 在接口中将该属性声明为只读,并使用类扩展名在内部访问该属性。这是基于消息的访问,因此可以很好地与KVO,原子性等配合使用。 在接口中将该属性声明为只读,但在内部访问后备ivar。由于对ivar的默认访问受到保护,因此在类

  • 我知道有很多关于这个的线程,但还没有一个解决我的问题。我有一个在Eclipse中运行的Spring Boot应用程序,我将参数外部化,以便部署到外部Tomcat并使属性远离战争。我将application.properties从src/main/Resources移至APP_ROOT/config。在catalina.sh,我添加了这个: 外部构建工作正常;然而,现在它不再从日食开始。我通过在启动

  • 我正在开发一个spring boot应用程序 我想用外部文件(例如)重写中的某些属性。 我尝试了几种方法: 中的“我的应用程序.属性”中的 我使用对其进行了测试。第一个方法只添加了属性,但没有重写它们。

  • 问题内容: 我在Tomcat 8.0.33和Spring Boot Starter Web上,并将其保存在我的setenv.sh中 在覆盖文件夹中,我有2个文件 1) 2) application.properties中有一个条目 我看到正确的log.level被输入到我的代码中,这意味着该命令正在运行。只是我不知道为什么我的超控未按预期发生 我的工作区中没有任何`PropertyPlacehol

  • 我在Tomcat中部署了基于Spring Boot的war文件。我无法使用外部应用程序属性文件。我正在使用follows提供外部属性文件的路径 我也用qoutes试过 这些属性不起作用,spring正在读取绑定在war文件中的属性文件。有谁能帮我一下吗?谢谢

  • 我的应用程序正在尝试外部化所有项目属性,一些属性将位于我的应用程序中,而另一个属性将位于 Windows 中某处的文件夹中。 我将Spring设置为这样执行:-Spring . config . location = file:///C:\ Temp \ config \ application . properties,class path:application . properties 如您