1.8. 属性表达式


属性表达式是属性引用和纯文本字符串的组合,可用于替换配置中属性值。

与变量一样,您可以使用 Quarkus 中的属性表达式来替换配置属性的值,而不是硬编码。当 java.util.Properties 从应用中的配置源读取属性值时,属性表达式会被解析。

这意味着,如果在编译时从配置中读取配置属性,则属性表达式也会在编译时解析。如果在运行时覆盖配置属性,则其值会在运行时解析。

您可以使用多个配置源解析属性表达式。这意味着,您可以使用一个配置源中定义的属性值来扩展您在另一个配置源中使用的属性表达式。

如果表达式中的属性值无法解析,并且您没有为表达式设置默认值,则应用会遇到 NoSuchElementException

1.8.1. 属性表达式的使用示例

要在配置 Quarkus 应用程序时获得灵活性,您可以使用属性表达式,如下例所示。

  • 替换配置属性值:

    为了避免配置中硬编码属性值,您可以使用属性表达式。使用 ${<property_name>} 语法编写引用配置属性的表达式,如下例所示:

    application.properties 文件示例

    remote.host=quarkus.io
    callable.url=https://${remote.host}/
    Copy to Clipboard Toggle word wrap

    callable.url 属性的值解析为 https://quarkus.io/

  • 设置特定于特定配置配置文件的属性值:

    在以下示例中,%dev 配置配置集和默认配置配置集被设置为使用带有不同主机地址的数据源连接 URL。

    application.properties 文件示例

    %dev.quarkus.datasource.jdbc.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false
    quarkus.datasource.jdbc.url=jdbc:mysql://remotehost:3306/mydatabase?useSSL=false
    Copy to Clipboard Toggle word wrap

    根据用于启动应用程序的配置配置集,您的数据源驱动程序使用您为配置集设置的数据库 URL。

    您可以通过为每个配置配置集的自定义 application.server 属性设置不同的值,从而简化相同的结果。然后,您可以引用应用程序的数据库连接 URL 中的属性,如下例所示:

    application.properties 文件示例

    %dev.application.server=localhost
    application.server=remotehost
    
    quarkus.datasource.jdbc.url=jdbc:mysql://${application.server}:3306/mydatabase?useSSL=false
    Copy to Clipboard Toggle word wrap

    application.server 属性会根据您在运行应用程序时选择的配置集解析为适当的值。

  • 设置属性表达式的默认值:

    您可以为属性表达式定义默认值。如果扩展表达式所需的属性值没有从任何配置源解析,则quarkus 使用默认值。您可以使用以下语法为表达式设置默认值:

    ${<property_name>:<default_value>}
    Copy to Clipboard Toggle word wrap

    在以下示例中,数据源 URL 中的属性表达式使用 mysql.db.server 作为 application.server 属性的默认值:

    application.properties 文件示例

    quarkus.datasource.jdbc.url=jdbc:mysql://${application.server:mysql.db.server}:3306/mydatabase?useSSL=false
    Copy to Clipboard Toggle word wrap

  • 嵌套属性表达式:

    您可以通过在另一个属性表达式中嵌套属性表达式来编写属性表达式。当扩展嵌套属性表达式时,首先扩展内部表达式。您可以使用以下语法嵌套属性表达式:

    ${<outer_property_name>${<inner_property_name>}}
    Copy to Clipboard Toggle word wrap
  • 组合多个属性表达式:

    您可以使用以下语法将两个或多个属性表达式接合在一起:

    ${<first_property_name>}${<second_property_name>}
    Copy to Clipboard Toggle word wrap
  • 将属性表达式与环境变量合并:

    您可以使用属性表达式替换环境变量的值。以下示例中的表达式替换了为 HOST 环境变量设置的值作为 application.host 属性的值:

    application.properties 文件示例

    remote.host=quarkus.io
    application.host=${HOST:${remote.host}}
    Copy to Clipboard Toggle word wrap

如果没有设置 HOST 环境变量,application.host 属性将使用 remote.host 属性的值作为默认值。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat