Commit 6a0eb900 authored by Andy Wilkinson's avatar Andy Wilkinson Committed by Phillip Webb

Upgrade to Spring Batch 3.0.1

Due to a mistake in Spring Batch 3.0.0 it has been necessary to
introduce a breaking API change (the addition of
BatchConfigurer.getJobExplorer()) in the 3.0.1 release. This commit
updates Boot to use 3.0.1 and modifies the Batch auto-configuration
and associated tests to implement the new method.
parent f7b7b1c8
...@@ -23,6 +23,8 @@ import javax.sql.DataSource; ...@@ -23,6 +23,8 @@ import javax.sql.DataSource;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.batch.core.configuration.annotation.BatchConfigurer; import org.springframework.batch.core.configuration.annotation.BatchConfigurer;
import org.springframework.batch.core.explore.JobExplorer;
import org.springframework.batch.core.explore.support.JobExplorerFactoryBean;
import org.springframework.batch.core.launch.JobLauncher; import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.launch.support.SimpleJobLauncher; import org.springframework.batch.core.launch.support.SimpleJobLauncher;
import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.repository.JobRepository;
...@@ -36,6 +38,7 @@ import org.springframework.transaction.PlatformTransactionManager; ...@@ -36,6 +38,7 @@ import org.springframework.transaction.PlatformTransactionManager;
* Basic {@link BatchConfigurer} implementation. * Basic {@link BatchConfigurer} implementation.
* *
* @author Dave Syer * @author Dave Syer
* @author Andy Wilkinson
*/ */
@Component @Component
public class BasicBatchConfigurer implements BatchConfigurer { public class BasicBatchConfigurer implements BatchConfigurer {
...@@ -52,6 +55,8 @@ public class BasicBatchConfigurer implements BatchConfigurer { ...@@ -52,6 +55,8 @@ public class BasicBatchConfigurer implements BatchConfigurer {
private JobLauncher jobLauncher; private JobLauncher jobLauncher;
private JobExplorer jobExplorer;
/** /**
* Create a new {@link BasicBatchConfigurer} instance. * Create a new {@link BasicBatchConfigurer} instance.
* @param dataSource the underlying data source * @param dataSource the underlying data source
...@@ -86,18 +91,31 @@ public class BasicBatchConfigurer implements BatchConfigurer { ...@@ -86,18 +91,31 @@ public class BasicBatchConfigurer implements BatchConfigurer {
return this.jobLauncher; return this.jobLauncher;
} }
@Override
public JobExplorer getJobExplorer() throws Exception {
return this.jobExplorer;
}
@PostConstruct @PostConstruct
public void initialize() { public void initialize() {
try { try {
this.transactionManager = createTransactionManager(); this.transactionManager = createTransactionManager();
this.jobRepository = createJobRepository(); this.jobRepository = createJobRepository();
this.jobLauncher = createJobLauncher(); this.jobLauncher = createJobLauncher();
this.jobExplorer = createJobExplorer();
} }
catch (Exception ex) { catch (Exception ex) {
throw new IllegalStateException("Unable to initialize Spring Batch", ex); throw new IllegalStateException("Unable to initialize Spring Batch", ex);
} }
} }
private JobExplorer createJobExplorer() throws Exception {
JobExplorerFactoryBean jobExplorerFactoryBean = new JobExplorerFactoryBean();
jobExplorerFactoryBean.setDataSource(this.dataSource);
jobExplorerFactoryBean.afterPropertiesSet();
return jobExplorerFactoryBean.getObject();
}
private JobLauncher createJobLauncher() throws Exception { private JobLauncher createJobLauncher() throws Exception {
SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
jobLauncher.setJobRepository(getJobRepository()); jobLauncher.setJobRepository(getJobRepository());
......
...@@ -248,8 +248,8 @@ public class BatchAutoConfigurationTests { ...@@ -248,8 +248,8 @@ public class BatchAutoConfigurationTests {
return launcher; return launcher;
} }
@Bean @Override
public JobExplorer jobExplorer() throws Exception { public JobExplorer getJobExplorer() throws Exception {
MapJobExplorerFactoryBean explorer = new MapJobExplorerFactoryBean( MapJobExplorerFactoryBean explorer = new MapJobExplorerFactoryBean(
this.factory); this.factory);
explorer.afterPropertiesSet(); explorer.afterPropertiesSet();
......
...@@ -39,7 +39,6 @@ import org.springframework.batch.core.step.tasklet.Tasklet; ...@@ -39,7 +39,6 @@ import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus; import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.batch.support.transaction.ResourcelessTransactionManager; import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.SyncTaskExecutor; import org.springframework.core.task.SyncTaskExecutor;
import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.PlatformTransactionManager;
...@@ -177,8 +176,8 @@ public class JobLauncherCommandLineRunnerTests { ...@@ -177,8 +176,8 @@ public class JobLauncherCommandLineRunnerTests {
return launcher; return launcher;
} }
@Bean @Override
public JobExplorer jobExplorer() throws Exception { public JobExplorer getJobExplorer() throws Exception {
return new MapJobExplorerFactoryBean(this.jobRepositoryFactory).getObject(); return new MapJobExplorerFactoryBean(this.jobRepositoryFactory).getObject();
} }
} }
......
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
<spock.version>0.7-groovy-2.0</spock.version> <spock.version>0.7-groovy-2.0</spock.version>
<spring.version>4.0.5.RELEASE</spring.version> <spring.version>4.0.5.RELEASE</spring.version>
<spring-amqp.version>1.3.5.RELEASE</spring-amqp.version> <spring-amqp.version>1.3.5.RELEASE</spring-amqp.version>
<spring-batch.version>3.0.0.RELEASE</spring-batch.version> <spring-batch.version>3.0.1.RELEASE</spring-batch.version>
<spring-data-releasetrain.version>Dijkstra-SR1</spring-data-releasetrain.version> <spring-data-releasetrain.version>Dijkstra-SR1</spring-data-releasetrain.version>
<spring-hateoas.version>0.14.0.RELEASE</spring-hateoas.version> <spring-hateoas.version>0.14.0.RELEASE</spring-hateoas.version>
<spring-integration.version>4.0.2.RELEASE</spring-integration.version> <spring-integration.version>4.0.2.RELEASE</spring-integration.version>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment