Spring Batch 2 datasource

Spring Batch DataSource

Few months ago, I explained basic Spring Batch(Spring Batch Get Started)
Spring Batch JobBuilderFactory seems to require dataSource to save Batch status.

So, I need 2 datasources

  • Spring Batch step status
  • Data(read, write)

In this example, I use HSQL lib for status, use MySQL as data.

Preparation

To use HSQL and MySQL, please add following dependencies

compile("org.hsqldb:hsqldb")
compile("mysql:mysql-connector-java:5.1.40")

DataSourceConfiguration.java

This is datasource configuration class

public class DataSourceConfiguration {

    @Bean
    @Primary
    public DataSource hsqldbDataSource() throws SQLException {
        final SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
        dataSource.setDriver(new org.hsqldb.jdbcDriver());
        dataSource.setUrl("jdbc:hsqldb:mem:mydb");
        dataSource.setUsername("sa");
        dataSource.setPassword("");
        return dataSource;
    }

    @Bean
    public DataSource mysqlDataSource() throws SQLException {
        final SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
        dataSource.setDriver(new com.mysql.jdbc.Driver());
        dataSource.setUrl("jdbc:mysql://localhost/test");
        dataSource.setUsername("username");
        dataSource.setPassword("password");
        return dataSource;
    }
}

BatchConfiguration.java

@Configuration
@EnableBatchProcessing
@ComponentScan(basePackageClasses = DefaultBatchConfigurer.class)
@EnableAutoConfiguration
@Import(DataSourceConfiguration.class)
public class BatchConfiguration {
  ...
}