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

在Spring Boot中禁用数据库初始化检测器

魏浩广
2023-03-14

我正在定义自己的Liquibase自动配置来管理多租户,这涉及一个原型SpringLiquibasebean:

@Bean
@Scope(value = BeanDefinition.SCOPE_PROTOTYPE)
SpringLiquibase tenantCreatedLiquibase(String tenantId) {
    // construct a SpringLiquibase instance
}

tenantCreatedLiquibase原型bean在运行时通过对象提供程序实例化

LiquibaseDatabaseInitializerDetector在我的tenantCreatedLiquibasebean上从jdbcTemplate创建依赖项。ApplicationContext无法加载,因为tenantCreatedLiquibase原型bean需要tenantId参数。

我怎样才能禁用Liqui的数据库初始化检测器?或者以其他方式解决这个问题?


共有1个答案

邓兴为
2023-03-14
匿名用户

一种解决方法是排除引用DatabaseInitializationDependencyConfigurer的任何自动配置。在我的例子中,这意味着排除<code>JdbcTemplateAutoConfiguration</code>和<code>SqlInitializationAutoConfiguration</code>(除了<code>LiquibaseAutoConfiguration</code>之外,因为我提供了自己的自定义替换)。

我仍然倾向于直接控制< code > databaseininitializerdictor 的注册,但我不确定这是否可行。

 类似资料:
  • 本文向大家介绍SpringBoot使用flyway初始化数据库,包括了SpringBoot使用flyway初始化数据库的使用技巧和注意事项,需要的朋友参考一下 概述 Flyway这款数据库版本工具就算大家没有使用过但也略有耳闻了,SpringBoot对该款工具进行集成的框架可以让我们在启动SpringBoot应用时自动去找SQL版本文件进行比对执行,但在迁移或初始化时往往还是需要先手动进行下数据库

  • 我有不使用Flyway的现有数据库postgres,我需要复制它。如何将现有数据库状态移动到新的空数据库?我没有任何迁移sql。所以我期待像Liquibase中的GenerateChangelog这样的命令,但在Flyway中似乎没有这样的命令。

  • 初始化数据 打开MainSetup类,在Daos语句后面插入新建根用户的代码 // 初始化默认根用户 if (dao.count(User.class) == 0) { User user = new User(); user.setName("admin"); user.setPassword

  • 场景:我在Spring中开发了一个使用mysql 8数据库的微服务。这个数据库必须被初始化(创建一个数据库、一些表和数据)。在我的主机上,我用data.sql和schema.sql脚本初始化了数据库。问题是,我必须设置: 第一次执行。这将以我想要的方式初始化我的数据库。对于以后的运行,我必须对该命令进行注释。非常难看的解决方案,但我找不到更好的解决方案,我现在没有得到这个问题的答案。我认为测试它是

  • 问题内容: 我想在Web应用程序启动时加载属性文件并设置连接池。显然,我只想在一个地方进行一次,因此可以根据需要进行更改。对于常规的servlet,我只需将初始化代码放在servlet的init()方法中,但是您无法使用Jersey servlet对其进行访问。那么我在哪里做呢?上面链接中的侦听器如何工作? 问题答案: 您需要做的就是编写一个实现ServletContextListener接口的J

  • 我想为现有的应用程序使用flyway。 应该有两种不同的情况: 1)应用程序安装:DDL和数据库初始化 2) 应用程序更新:迁移数据库 问题是如果我安装版本6.0,我有例如: 如果我将init version设置为V1.0.0,它将执行直到V6_0_0的所有更新,但是在数据库初始化之后,它将跳过所有更新。 要安装一个旧的shema,这样我就可以使用所有udpate脚本,即使对于全新安装也会非常困难