Class BatchClusterDataSourceScriptDatabaseInitializer

java.lang.Object
io.github.jchejarla.springbatch.clustering.autoconfigure.BatchClusterDataSourceScriptDatabaseInitializer
All Implemented Interfaces:
org.springframework.beans.factory.InitializingBean

public class BatchClusterDataSourceScriptDatabaseInitializer extends Object implements org.springframework.beans.factory.InitializingBean
Optionally creates the cluster coordination tables (BATCH_NODES, BATCH_JOB_COORDINATION, BATCH_PARTITIONS, BATCH_JOB_PHASE_EVENTS) on startup, mirroring Spring Batch's own schema initialization.

Driven by spring.batch.cluster.initialize-schema (ALWAYS / EMBEDDED / NEVER; default EMBEDDED, i.e. only for embedded databases such as H2). The registering bean is annotated @DependsOnDatabaseInitialization so this runs after the Spring Batch schema has been created (by Flyway, Liquibase, or spring.sql.init — Spring Boot 4 no longer creates it automatically), letting the foreign keys to BATCH_JOB_EXECUTION / BATCH_STEP_EXECUTION resolve. This is intentionally a plain initializer, not a DataSourceScriptDatabaseInitializer, so it is not itself treated as a database initializer (which would make the ordering annotation self-referential). For production, prefer a managed migration tool or apply the bundled DDL manually.

Author:
Janardhan Chejarla
  • Constructor Details

    • BatchClusterDataSourceScriptDatabaseInitializer

      public BatchClusterDataSourceScriptDatabaseInitializer(DataSource dataSource, org.springframework.boot.sql.init.DatabaseInitializationMode mode, String schemaLocation)
  • Method Details

    • afterPropertiesSet

      public void afterPropertiesSet()
      Specified by:
      afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean