簡體   English   中英

如何使用 Spring Boot 和 Liquibase 變更集 yaml 文件訪問系統屬性

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

使用 Liquibase 管理數據庫模式更改的 Spring Boot 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 文件中的屬性使用另一種表示法嗎? 或者不能像使用 xml 文件那樣在 liquibase yaml 文件中引用屬性嗎?

當您使用 Spring Boot 時,您可以使用它的application.properties文件來定義更改日志參數

名稱以liquibase.parameters. 可以在更新日志中引用。 例如,屬性liquibase.parameters.url.info可以在您的更改日志(YAML 或 XML)中引用為${url.info}

要為開發、QA、生產等使用不同的配置文件,您可以使用配置文件和配置文件特定的配置文件。 例如, application-dev.properties文件只會在dev配置文件處於活動狀態時加載。

感謝以上回答中的任何人。 只是為了更清楚: application.yaml中的完整參數名稱應如下所示:

spring:
liquibase:
  parameters:
    paramName: paramValue

然后在我的情況下,您可以在 liquibase 變更集中將其稱為${paramName}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM