Mongock spring-boot delay bean creation until Mongock is done

275 views Asked by At

With liquibase and Spring Boot I can do @DependsOn("liquibase") to wait when I have a @Bean creating method. This lets me create beans that depend on initialization data.

How do I do this in mongock?

I saw this question but I need to order the bean creation in the context, not force the context to wait on the mongock init to happen before being complete...

1

There are 1 answers

1
mikeb On BEST ANSWER

Turns out to do this we can't use the annotation configuration, we need to use the Mongock initializing bean and create it in a @Bean, name it, and then we can use DependsOn('mongock') for dependent beans:

Note that this is Kotlin...

@Configuration
class MongockConfiguration {
    @Bean("mongock")
    fun mongockInitializingBeanRunner(
        mongoTemplate: MongoTemplate,
        applicationContext: ApplicationContext
    ): MongockInitializingBeanRunner {
        return MongockSpringboot.builder()
            .setDriver(SpringDataMongoV4Driver.withDefaultLock(mongoTemplate))
            .addMigrationScanPackage("come.package.changelog")
            .setSpringContext(applicationContext)
            .buildInitializingBeanRunner();
    }
}