78 lines
3.1 KiB
Java
78 lines
3.1 KiB
Java
package com.baeldung.batch;
|
|
|
|
import java.net.MalformedURLException;
|
|
|
|
import javax.sql.DataSource;
|
|
|
|
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
|
|
import org.springframework.batch.core.launch.JobLauncher;
|
|
import org.springframework.batch.core.launch.support.SimpleJobLauncher;
|
|
import org.springframework.batch.core.repository.JobRepository;
|
|
import org.springframework.batch.core.repository.support.JobRepositoryFactoryBean;
|
|
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.core.io.Resource;
|
|
import org.springframework.jdbc.datasource.DriverManagerDataSource;
|
|
import org.springframework.jdbc.datasource.init.DataSourceInitializer;
|
|
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
|
|
import org.springframework.transaction.PlatformTransactionManager;
|
|
|
|
@Configuration
|
|
@EnableBatchProcessing
|
|
public class SpringConfig {
|
|
|
|
@Value("org/springframework/batch/core/schema-drop-sqlite.sql")
|
|
private Resource dropReopsitoryTables;
|
|
|
|
@Value("org/springframework/batch/core/schema-sqlite.sql")
|
|
private Resource dataReopsitorySchema;
|
|
|
|
@Bean
|
|
public DataSource dataSource() {
|
|
DriverManagerDataSource dataSource = new DriverManagerDataSource();
|
|
dataSource.setDriverClassName("org.sqlite.JDBC");
|
|
dataSource.setUrl("jdbc:sqlite:repository.sqlite");
|
|
return dataSource;
|
|
}
|
|
|
|
@Bean
|
|
public DataSourceInitializer dataSourceInitializer(DataSource dataSource) throws MalformedURLException {
|
|
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
|
|
|
|
databasePopulator.addScript(dropReopsitoryTables);
|
|
databasePopulator.addScript(dataReopsitorySchema);
|
|
databasePopulator.setIgnoreFailedDrops(true);
|
|
|
|
DataSourceInitializer initializer = new DataSourceInitializer();
|
|
initializer.setDataSource(dataSource);
|
|
initializer.setDatabasePopulator(databasePopulator);
|
|
|
|
return initializer;
|
|
}
|
|
|
|
private JobRepository getJobRepository() throws Exception {
|
|
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
|
|
factory.setDataSource(dataSource());
|
|
factory.setTransactionManager(getTransactionManager());
|
|
// JobRepositoryFactoryBean's methods Throws Generic Exception,
|
|
// it would have been better to have a specific one
|
|
factory.afterPropertiesSet();
|
|
return (JobRepository) factory.getObject();
|
|
}
|
|
|
|
private PlatformTransactionManager getTransactionManager() {
|
|
return new ResourcelessTransactionManager();
|
|
}
|
|
|
|
public JobLauncher getJobLauncher() throws Exception {
|
|
SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
|
|
// SimpleJobLauncher's methods Throws Generic Exception,
|
|
// it would have been better to have a specific one
|
|
jobLauncher.setJobRepository(getJobRepository());
|
|
jobLauncher.afterPropertiesSet();
|
|
return jobLauncher;
|
|
}
|
|
|
|
} |