【问题标题】:Spring Boot - Profiles (application.properties) to define baseUrl for HTTP requestsSpring Boot - Profiles (application.properties) 为 HTTP 请求定义 baseUrl
【发布时间】:2020-05-22 07:03:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: java spring-boot api profile


    【解决方案1】:

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

    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 中具有最高优先级。

    【讨论】:

    • 感谢您的回复。如何根据配置文件运行项目?
    • 你可以这样使用它:java -jar your_application.jar --spring.profiles.active=prod --spring.config.additional-location=config/application.properties 这将使用你的/resources/application-prod.properties 和你的外部/config/application-prod.properties(如果你有的话)
    【解决方案2】:

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

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

    改为在服务 A 中创建弹簧配置文件:

    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 boot 会自动加载正确的定义,因为 dev/prod 匹配属性文件的后缀

    【讨论】:

    • 您好,感谢您的回复。几乎让它工作了。您或许知道如何运行该应用程序?能否请您提供完整的命令以使用标志运行它?
    • 如果您已经运行 mvn package 并获得了工件,那么假设您在工件所在的文件夹中,您可以输入 java -jar myapp.jar --spring.profiles.active=prod`。当然,您必须确保正确构建了 spring-boot 应用程序(使用 spring-boot-maven 插件)。使用工件全名代替 myapp.jar。
    • 再次感谢您的回复。当我使用该命令时,我遇到了下一个问题。 “无法访问 jarfiledairy-app-0.0.1-SNAPSHOT.jar”。是因为找不到吗?我真的需要帮助..
    • mvn package 成功后你应该转到“目标”目录,在那里你会看到工件......
    • 我发了另一篇文章,也许是更清楚一点:stackoverflow.com/questions/60205741/…
    猜你喜欢
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2021-03-06
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多