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

将liquibase mongodb扩展与Spring Boot结合使用

俞子实
2023-03-14

试图在Spring Boot中使用liquibase mongodb扩展,但运行迁移对我的数据库没有影响。

在pom文件中添加了liquibase核心、liquibase mongodb扩展和ongo java驱动程序作为依赖项。

这是我的变更日志文件:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog 
    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd
    http://www.liquibase.org/xml/ns/dbchangelog-ext 
    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

<changeSet id="first" author="andrei">
    <ext:createCollection collectionName="myCollection">
        <ext:options>
            {
            validator: {
            $jsonSchema: {
            bsonType: "object",
            required: ["name", "address"],
            properties: {
            name: {
            bsonType: "string",
            description: "The Name"
            },
            address: {
            bsonType: "string",
            description: "The Address"
            }
            }
            }
            },
            validationAction: "warn",
            validationLevel: "strict"
            }
        </ext:options>
    </ext:createCollection>
    </changeSet>
</databaseChangeLog>

我尝试注入Bean SpringLiquibase,但它需要我提供一个DataSource,这是一个接口,而mongo的液化基础扩展不提供这个接口的实现。

@Bean
public SpringLiquibase liquibase() {
    MongoLiquibaseDatabase db = new MongoLiquibaseDatabase();
    SpringLiquibase liquibase = new SpringLiquibase();
    liquibase.setChangeLog("classpath:/db/changelog/db.changelog-master.yaml");
    //How to do this?
    // liquibase.setDataSource();
    liquibase.setShouldRun(true);
    return liquibase;
}

有没有人有使用Spring的liquidbase mongodb扩展的工作示例?

共有1个答案

孔安阳
2023-03-14

最简单的方法可能是使用org。springframework。jdbc。数据源。SimpleDriverDataSourceliquibase。外线mongodb。数据库MongoClientDriver

MongoClientDriver是liquibase mongodb扩展的一部分,它使MongoClient适应java。sql。驱动程序接口,因为Liquibase需要它。

这应该允许您创建SimpleDriverDataSource并将其传递给liquibase,如:

SimpleDriverDataSource dataSource = new SimpleDriverDataSource(new MongoClientDriver(), YOUR_URL, YOUR_USERNAME, YOUR_PASSWORD);
liquibase.setDataSource(dataSource);
 类似资料:
  • 扩展说明 合并返回结果,用于分组聚合。 扩展接口 org.apache.dubbo.rpc.cluster.Merger 扩展配置 <dubbo:method merger="xxx" /> 已知扩展 org.apache.dubbo.rpc.cluster.merger.ArrayMerger org.apache.dubbo.rpc.cluster.merger.ListMerger org

  • 4.3 嵌套组合与扩展 VimL 虽然只提供了列表与字典两种数据结构,但通过列表与字典的合理组合,几乎能表 达任意复杂的数据结构。这与许多其他流行的脚本语言(如 python)的思想如出一辙。 本节就讨论在 VimL 中如何用列表与字典表示常用数据结构。 堆栈与队列 堆栈是所谓先进后出的结构,队列是先进先出的结构。这可以直接用一个 list 表示, 因为 list 相当于个动态数组,支持随意在两端

  • 主要内容:org.springframework.context.ApplicationContextInitializer,org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor,org.springframework.beans.factory.config.BeanFactoryPostProcessor,,,,,,,,,,,,1.可扩展的接口启动调用顺序图 ApplicationConte

  • 主要内容:org.springframework.context.ApplicationContextInitializer,org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor,org.springframework.beans.factory.config.BeanFactoryPostProcessor,,,,,,,,,,,,1.可扩展的接口启动调用顺序图 ApplicationConte

  • 问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有

  • 我已经阅读了一些关于SaaS/PaaS/IaaS的信息,我在想: 如果我提供了一个SaaS应用程序,我的客户能否使用PaaS开发和部署他自己的应用程序,PaaS将使用一些API与我的SaaS应用程序交互?还是我对云服务的理解有误?