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

spring boot中的多个liquibase配置

越开畅
2023-03-14

我有使用2个数据库的spring boot应用程序。我定义了2种提供指定数据源的配置。我想让liquibase单独管理这些数据源。我定义了两个独立的变更日志文件。

问题是,我无法为液化酶定义两个单独的bean

以下是我的配置类:

...
public class CCSConfiguration {
    ...

    @Bean
    @ConfigurationProperties("ccs.liquibase")
    public LiquibaseProperties ccsLiquibaseProperties() {
        return new LiquibaseProperties();
    }

    @Bean
    public SpringLiquibase ccsLiquibase(LiquibaseProperties liquibaseProperties) {
        ...
    }
    ...
}



...
public class CCAConfiguration {
    ...
    @ConfigurationProperties("cca.liquibase")
    public LiquibaseProperties ccaLiquibaseProperties() {
        return new LiquibaseProperties();
    }

    @Bean
    public SpringLiquibase ccaLiquibase(LiquibaseProperties liquibaseProperties) {
        ...
    }
    ...
}

和属性:

cca:
    liquibase:
        change-log: classpath:config/liquibase/cca/master.xml
ccs:
    liquibase:
        change-log: classpath:config/liquibase/ccs/master.xml

使用此配置,我在运行应用程序时出现以下错误:

2017-04-11 14:26:55.664  WARN 34292 --- [  restartedMain] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'liquibase' available
2017-04-11 14:26:55.711  WARN 34292 --- [  restartedMain] o.s.boot.SpringApplication               : Error handling failed (Error creating bean with name 'delegatingApplicationListener' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.cache.config.internalCacheAdvisor' defined in class path resource [org/springframework/cache/annotation/ProxyCachingConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cache.interceptor.BeanFactoryCacheOperationSourceAdvisor]: Factory method 'cacheAdvisor' threw exception; nested exception is java.lang.NullPointerException)
2017-04-11 14:26:55.939 ERROR 34292 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

A component required a bean named 'liquibase' that could not be found.


Action:

Consider defining a bean named 'liquibase' in your configuration.

那么,是否可以为不同的数据源定义多个liquibase bean?

共有1个答案

章建木
2023-03-14

有两种选择:

>

  • 您定义了一个名为liquibase的bean,让spring-boot集成进程在您的第一个DS上更新您的模式。您必须手动处理第二个

    您可以在启动时使用禁用liquibase自动更新

    已启用:false

    并定义DS和liquibase bean更新两个数据库的方式

  •  类似资料:
    • 我在SpringBoot应用程序中实现了多语言,在完成以下配置后,我得到的属性文件无法加载 文件夹名称 src/main/resources/i18n/messages 属性文件名 messages_us.properties 在应用程序主类 内部控制器 标题 接受-语言:我们 我明白了 [36mo.s.c.s.ResourceBundleMessageSource[0;39m[2m:[0;39m

    • 在我的应用程序中,我可能需要运行多个Changelog文件,但我无法执行这样的执行, 我尝试按以下方式提供多个Changelog, LiquiBase.SetChangeLog(“classpath:schema/update-schema-01.sql”); LiquiBase.SetChangeLog(“classpath:schema/update-schema-02.sql”); 请在这里

    • 寻找在Springboot应用程序中配置多个配置文件特定属性文件的最佳方法。下面是一个例子: -资源  · --application.properties  · · · · · --德夫             --application-dev.properties             --ldap-dev.properties             --Quartz-Dev.Prope

    • 我正试图让ubuntu上的liquibase 3.10.2首次在Db2仓库中运行。在教程示例之后,H2“liquibase update”示例运行良好。 使用指定的jar和下面的url字符串,可以很好地使用dbeaver,但将其转换为liquibase会提供以下错误。 更新的附加信息: (1)导致显示错误的完整命令行是什么?我正在发布h2教程中引用的简单示例 (2)更改日志文件内容是什么这与示例h

    • 本文向大家介绍SpringBoot整合liquibase的实现方法,包括了SpringBoot整合liquibase的实现方法的使用技巧和注意事项,需要的朋友参考一下 LiquiBase 是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到

    • 本文向大家介绍springboot 多环境配置教程,包括了springboot 多环境配置教程的使用技巧和注意事项,需要的朋友参考一下 在上一课中我们通过idea工具没有做任何配置就构建了一个springboot项目,并且已经成功启动了,但我们都很清楚这些都远远不能达到我们实际项目的需求,比如我们要引入我们自己的redis配置、mysql配置等,应该如何处理呢?在spring mvc中我们都是通过