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

在Spring Boot中外部化配置,同时在同一容器中运行多个应用程序

彭俊智
2023-03-14
    null

问题:

由于应用程序部署在同一个JVM上,属性spring.config.location对于所有应用程序都具有相同的值。我希望我们的应用程序都使用相同的配置文件命名(application.properties),因此指定spring.config.name不是一个选项。

我想要的:

共有1个答案

诸葛乐逸
2023-03-14

您可以通过使用@PropertySource来实现您正在尝试的目标。根据官方文档(外部化配置),您可以使用此注释外部化配置文件,例如:

 @Configuration
 @PropertySource("file:/path/to/application.properties")
 public class AppConfig {

 }

如本文所述,在@PropertySource中,您可以使用将针对其他属性源解析的占位符,例如,在Application.Properties中声明的值

假设“my.placeholder”存在于已注册的属性源中,例如系统属性或环境变量,则占位符将被解析为相应的值。如果不是,那么“default/path”将被用作默认值。表示默认值(由冒号“:”分隔)是可选的。如果未指定默认值并且无法解析某个属性,则将引发IllegalArgumentException。

 @Configuration
 @PropertySource("${properties_home}/${application_id}/application.properties")
 public class AppConfig {

 }

不要忘记启用对解析占位符的支持:

为了解析${...}在bean定义或@value注释中使用PropertySource的属性,必须注册PropertySourcesPlaceHolderConfigurer。在XML中使用时,这会自动发生,但在使用@configuration类时,必须使用静态@bean方法显式注册。

更新:

spring.profiles.active=external
 类似资料:
  • 问题内容: 这个问题是我继续研究Docker的一部分,并且在某些方面跟进了我先前的问题之一。我现在已经了解了如何通过将一堆Docker容器链接在一起来获得完整的应用程序堆栈(实际上是微型VPS)。例如,可以创建一个堆栈,为Apache+ PHP5提供一堆扩展名+ Redis + MemCached+MySQL,它们都在Ubuntu上运行,无论是否带有附加数据容器,都可以轻松地序列化用户数据。 一切

  • 我有一个多Maven模块Spring Boot项目,具有以下结构: webservices和backend都是单独的Spring Boot应用程序(它们生成一个jar文件,我用它来启动它们),它们依赖于commons模块。因此,我将commons作为一个依赖项包含在webservices和后端的pom中。xml。 我对启动我的应用程序没有什么疑问。 如何在单个JVM中启动后端和webservice

  • 问题内容: 在go程序中,我想同时运行两个Web服务器, 显然它们将在两个不同的端口(如果需要,还有IP地址)上提供服务, 问题在于调用,当我尝试为’ /’对于第二台服务器,它会慌张,并说已经有一个与’/’相关联的处理程序, 我想我除了需要之外还需要创建一个多路复用器,我尝试使用来实现,但无法弄清楚, 在同一程序/进程中运行两个Web服务器是否存在根本性的错误。 更清楚地说,这两个Web服务器之一

  • 问题内容: 我有多个Node应用程序(在Express框架上构建)。 现在,我将它们这样放置- 现在,我想在同一端口(例如8080)上运行这3个应用程序。那可能吗 ? 需要注意的一件事是,每个应用都有类似的通用路线- 基本上,我想这样做,就像您可以使用Apache / PHP设置一样。 因此,当您拥有LAMP堆栈时- 您可以通过-作为其他应用轻松访问它们- 问题答案: 您可以使用:

  • 它不使用自定义工厂。并且已经有几个其他模块(对于其他特性来说是gradle模块)正在使用WorkManger而不使用Factory。现在,如果我更改这个配置并添加一个工厂,它可能会破坏其他几个地方的work manager设置。我是否可以只对模块中的WorkManager类使用工厂(或者只有一些WorkManager类应该通过工厂初始化,其他的使用默认配置)。有可能吗?希望我的问题清楚了。

  • 在springboot应用程序中,我有一个jar,然后是一个子目录config with application。属性,applicationContext。xml和log4j。。。属性文件。 我正在尝试外部化log4j配置。application.properties是这样外部化的。 但是,当springboot运行时,它使用jar文件中的log4j配置文件。通过使用-Dlog4j.debug选