如何使用 spring 引导和 Liquibase 变更集 yaml 文件访问系统属性

how can I access system properties using spring boot and Liquibase changeset yaml file

使用 Liquibase 管理数据库架构更改的 Spring 引导 Java 应用程序以指定其运行环境的参数(例如 dev、int)启动。

有相应的属性文件(例如dev.properties、int.properties)定义了相应环境的属性。

所以在dev.properties中有例如

url.info=http://dev.app.info

在tst.properties中有

url.info=http://tst.app.info

应用程序从传入参数对应的文件中读取属性。

当在每个环境中部署和启动应用程序时,此机制工作正常。使用相应的 属性 的情况很多。

但是,它不适用于包含以下插入语句的 Liquibase yaml 变更集

- insert:
        tableName: result
        columns:
          - column:
              name: id
              value: a88b6708-5c9f-40c4-a3ca-41e7a6b57fc8
          - column:
              name: infoUrl
              value: ${url.info}

我尝试在 yaml 文件中使用双引号和单引号,即 "${url.info}" 和 '${url.info}' 但数据库总是以字符串 ${ url.info}

yaml 文件中的属性是否必须使用另一种表示法? 要么 在 liquibase yaml 文件中不能像在 xml 文件中那样引用属性吗?

因为你在使用Spring Boot,你可以使用它的application.properties文件来定义change log parameters

任何名称以 liquibase.parameters. 开头的 属性 都可以在更新日志中引用。例如,属性 liquibase.parameters.url.info 可以在您的变更日志(YAML 或 XML)中引用为 ${url.info}

要为开发、QA、生产等使用不同的配置文件,您可以使用配置文件和配置文件特定的配置文件。例如,仅当 dev 配置文件处于活动状态时才会加载 application-dev.properties 文件。