Spring 引导 - 配置文件 (application.properties) 为 HTTP 请求定义 baseUrl

Spring Boot - Profiles (application.properties) to define baseUrl for HTTP requests

情况是我有两个 api 项目,API A 向 API B 发出 HTTP 请求。两个 API 都部署到开发和生产环境。

我想要实现的是:基于特定的配置文件(dev 或 prod)构建项目,以便代码可以使用特定的 baseurl 与正确的 api 在正确的环境下。

因此,如果我基于 prod 标志构建 API A,我希望它使用特定的 url 向部署在它自己的 prod 上的 API B 发出 http 请求环境。

看起来您指的是 maven 的配置文件,但是您应该查看 spring 配置文件。这个概念应该改变:

您不应该为不同的环境构建 不同的工件。

而是在服务 A 中创建 spring 配置文件:

application-dev.properties:

url.addr=dev-service-host:1234
application-prod.properties:

url.addr=prod-service-b-host:4321

然后运行带有--spring.profiles.active=dev(或prod)标志的应用程序。

Spring 引导将自动加载正确的定义,因为 dev/prod 匹配属性文件的后缀

您可以将 Spring-引导配置文件定义为:

spring.profiles.active=prod

您还应该在 resources:

中分析 .properties 个文件
  • application-dev.properties你应该有api.b.url={api_b_url_on_dev_environment}

  • application-prod.properties你应该有api.b.url={api_b_url_on_prod_environment}

如果您不想在更改属性后重新编译您的应用程序,您可以在 .properties 文件之外使用。

为了在应用程序部署期间包含它们,请执行以下操作:

  • 在某些 config 目录中添加 application-dev.propertiesapplication-prod.properties
  • 部署具有以下属性的应用程序:--spring.profiles.active=dev--spring.config.additional-location=config/application.properties

这样,外部配置的属性将包含在部署过程中。这些 .properties 个文件在 Spring 中具有最高优先级。