当前位置: 首页 > 知识库问答 >
问题:

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

唐运诚
2023-03-14

使用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

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

当应用程序在每个环境中部署和启动时,此机制运行良好。使用相应属性的实例有很多。

但是,它不适用于包含以下insert语句的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文件那样被引用吗?

共有2个答案

堵存
2023-03-14

谢谢上面的回答。为了更清楚:您的<code>应用程序中的完整参数名称。yaml应如下所示:

spring:
liquibase:
  parameters:
    paramName: paramValue

然后您可以在liquibase变更集中将其称为<code>${paramName}</code>在我的例子中

陶泳
2023-03-14

使用 Spring Boot 时,可以使用其 application.properties 文件来定义更改日志参数。

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

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

 类似资料:
  • 我想用liquibase变更集进行模拟数据的集成测试,如何使其不影响真实数据库?我从这里找到了部分想法,但我使用的是springboot,我希望有更简单的解决方案。

  • 我正在尝试用spring boot和liquibase做一个概念验证应用程序。我基本上想创建一个spring boot应用程序,它可以通过利用名为context的changeset属性来管理liquibase变更集,这样没有上下文的变更集可以应用于任何spring boot配置文件,而具有特定上下文(例如context="dev ")的变更集将仅在该类型的spring boot配置文件处于活动状态

  • 我需要访问非运行docker容器的文件系统。实现这一目标的最佳方式是什么? 谢谢

  • 我正在开发一个文件存储应用程序,需要读取 sd 存储和内部手机存储的内容。我已经签出了 react-native-fs 和 react-native-fetch-blob,但这两个应用程序都只允许我访问我的应用程序的存储。如何读取手机上的其他文件?

  • 通用文件系统访问接口 文件和目录相关用户库函数 Lab8中部分用户库函数与文件系统有关,我们先讨论对单个文件进行操作的系统调用,然后讨论对目录和文件系统进行操作的系统调用。 在文件操作方面,最基本的相关函数是open、close、read、write。在读写一个文件之前,首先要用open系统调用将其打开。open的第一个参数指定文件的路径名,可使用绝对路径名;第二个参数指定打开的方式,可设置为O_

  • 我们使用liquibase对数据库进行源代码控制。最初,我们从Postgres开始,创建了数据类型为特定于Postgres的列的变更集。 例如,我们有一个变更集,它创建了具有“JSON”类型字段的表。现在,我们想转移到其他数据库。因此,当我们针对另一个数据库运行变更集时,它无法创建表。我尝试添加“failOnError=false”。但是,后面的变更集失败,因为该表不存在。 您能建议如何重构旧的变