在运行时使用 intellij 在 Spring boot application.yml 文件中注入占位符值

Posted

技术标签:

【中文标题】在运行时使用 intellij 在 Spring boot application.yml 文件中注入占位符值【英文标题】:Inject place holder values at Spring boot application.yml file using intellij at run time 【发布时间】:2020-06-26 22:36:49 【问题描述】:

我正在使用 Intellj 运行我的 Spring Boot 应用程序,该应用程序具有带有占位符的 application.yml 文件。占位符的值应在运行时根据环境配置注入。

server:
  port: $SERVER_PORT

我正在尝试通过在应用程序运行的环境变量部分中传递占位符值来从 Intellij 运行 Spring Boot 应用程序

运行此应用程序时出现以下错误:

自动装配依赖注入失败;嵌套异常是 java.lang.IllegalArgumentException:无法解析值“$SERVER_PORT”中的占位符“SERVER_PORT” 原因:java.lang.IllegalArgumentException:无法解析值“$SERVER_PORT”中的占位符“SERVER_PORT”

【问题讨论】:

【参考方案1】:

这可能是因为您的变量赋值在某种程度上是递归的。 SERVER_PORTserver.port

具有相同的属性
server:
  port: 

请参阅here 了解配置属性的来源列表及其优先顺序。

尝试从您的 yaml 文件中删除该部分。如果你声明了一个环境变量 server.port 或 SERVER_PORT 那么 SpringBoot 会选择它并使用它。

【讨论】:

以上是关于在运行时使用 intellij 在 Spring boot application.yml 文件中注入占位符值的主要内容,如果未能解决你的问题,请参考以下文章

当 spring-boot 运行时 IntelliJ 进程以退出代码 0 完成

在 IntelliJ 中使用 JPA 的 Spring Boot

[使用由IntelliJ从PropertiesLoader加载的Spring Boot模块时,NoClassDefFoundError

使用 Groovy、IntelliJ 和 Gradle 在项目中“重新运行 Spring Boot 配置注释处理器”

使用 Spring Boot 和多模块的 Maven 配置 - 在 Intellij 中运行应用程序

在 IntelliJ 中运行 Spring Boot 应用程序会出现白标错误