gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:10:20 24 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

我们在应用程序(在 tomcat 中)的 Context 元素中外部定义:

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

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

关于java - spring-boot 应用程序的外部配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29106579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com