如何使用 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
文件。
使用 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
文件。