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

spring-boot应用程序的外部配置

阎昌勋
2023-03-14

我有一个spring-boot应用程序,我想用外部配置文件运行它。当我将其作为jar(带有嵌入式servlet容器)运行时,一切都很好。但是我想在外部servlet容器(Tomcat)下运行它,这里我遇到了外部配置的问题。我尝试了@PropertySource,但在这种情况下,应用程序只获得war文件配置中没有的属性:外部配置不会覆盖内部配置。那么问题是:我如何配置外部配置,它将覆盖内部配置?

共有1个答案

法弘亮
2023-03-14

当您将应用程序作为JAR运行时,可能在当前目录中使用application.properties形式的外部配置。但是,当在外部Tomcat中作为war部署时,“当前目录”并不是很有用。即使您找到了当前目录,它也很可能是运行在tomcat中的所有应用程序的相同位置,因此当您运行多个应用程序时,这将不会很好地工作。

这里我们要做的是在应用程序上声明两个PropertySources:

@PropertySources({@PropertySource(value={"classpath:internal.properties"}), @PropertySource(value={"file:${application.properties}"})})

internal.properties包含属性的“内置”默认值。第二个PropertySource是一个包含外部配置的文件。请注意文件的名称本身是一个属性。

<Context docBase="/path/to/your/war/your.war">
    <Parameter name="application.properties" value="/path/to/your/properties/application.properties"/>
</Context>

这允许在tomcat中运行多个应用程序,每个应用程序都使用它自己的外部属性文件。您甚至可以使用不同的属性运行同一应用程序的多个实例。

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

  • 基本上,我想使用spring boot auto配置数据源相关功能,并希望将spring boot应用打包到一个war,并部署到Tomcat。 github URL:https://github.com/oneslideicywater/customlizeofkakahair运行MVN构建后,我跳过测试,将部署到TomCat,重新启动它,然后在STS IDE中运行应用程序时,一切都很好。但是会发

  • 我正在寻找解决这个问题的方法。 我有几个属性文件(application.properties、application realdb.properties)。假设我从“realdb”spring概要文件开始。现在,我想在部署到tomcat上时重写我的属性。我决定将文件放在/lib文件夹中,因为它自动位于类路径上,我没有找到更好的(即特定于应用程序的类路径文件夹) 所以我可以在那里申请。属性,只要我

  • 基于此http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html文档,但我得到以下错误: 使用注释工作很好,但我真的希望远离它。这方面的任何帮助都是很好的 谢谢 我将此解释为文件${spring.application.name}.properties将从命令行传入

  • 我试图将spring boot应用程序部署到外部tomcat,在catalina.log文件中出现如下异常。 war文件名为:com#myapp.war。