Updated readers and writers to set platform transaction

It is no longer provided by default by the job builder.

https://github.com/spring-projects/spring-batch/wiki/Spring-Batch-5.0-Migration-Guide#infrastructure-beans-configuration-with-enablebatchbatchprocessing
This commit is contained in:
Glenn Renfro
2022-09-08 19:15:55 -04:00
parent 02f4581f32
commit 87632b3487
19 changed files with 187 additions and 28 deletions

View File

@@ -98,9 +98,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
public void init() {
this.transactionManager = new ResourcelessTransactionManager();
this.jobs = new JobBuilderFactory(this.jobRepository);
this.steps = new StepBuilderFactory(this.jobRepository, this.transactionManager);
this.steps = new StepBuilderFactory(this.jobRepository);
Tasklet tasklet = (contribution, chunkContext) -> RepeatStatus.FINISHED;
this.step = this.steps.get("step").tasklet(tasklet).build();
this.step = this.steps.get("step").tasklet(tasklet).transactionManager(this.transactionManager).build();
this.job = this.jobs.get("job").start(this.step).build();
this.runner = new TaskJobLauncherApplicationRunner(this.jobLauncher, this.jobExplorer, this.jobRepository,
new TaskBatchProperties());
@@ -138,7 +138,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
@DirtiesContext
@Test
public void runDifferentInstances() throws Exception {
this.job = this.jobs.get("job").start(this.steps.get("step").tasklet(throwingTasklet()).build()).build();
this.job = this.jobs.get("job").start(
this.steps.get("step").tasklet(throwingTasklet()).transactionManager(this.transactionManager).build())
.build();
// start a job instance
JobParameters jobParameters = new JobParametersBuilder().addString("name", "foo").toJobParameters();
runFailedJob(jobParameters);
@@ -152,9 +154,10 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
@DirtiesContext
@Test
public void retryFailedExecutionOnNonRestartableJob() throws Exception {
this.job = this.jobs.get("job").preventRestart()
.start(this.steps.get("step").tasklet(throwingTasklet()).build()).incrementer(new RunIdIncrementer())
.build();
this.job = this.jobs
.get("job").preventRestart().start(this.steps.get("step").tasklet(throwingTasklet())
.transactionManager(this.transactionManager).build())
.incrementer(new RunIdIncrementer()).build();
runFailedJob(new JobParameters());
runFailedJob(new JobParameters());
// A failed job that is not restartable does not re-use the job params of
@@ -171,7 +174,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
@DirtiesContext
@Test
public void retryFailedExecutionWithNonIdentifyingParameters() throws Exception {
this.job = this.jobs.get("job").start(this.steps.get("step").tasklet(throwingTasklet()).build())
this.job = this.jobs
.get("job").start(this.steps.get("step").tasklet(throwingTasklet())
.transactionManager(this.transactionManager).build())
.incrementer(new RunIdIncrementer()).build();
JobParameters jobParameters = new JobParametersBuilder().addLong("id", 1L, false).addLong("foo", 2L, false)
.toJobParameters();
@@ -184,7 +189,9 @@ public class TaskJobLauncherApplicationRunnerCoreTests {
@DirtiesContext
@Test
public void retryFailedExecutionWithDifferentNonIdentifyingParametersFromPreviousExecution() throws Exception {
this.job = this.jobs.get("job").start(this.steps.get("step").tasklet(throwingTasklet()).build())
this.job = this.jobs
.get("job").start(this.steps.get("step").tasklet(throwingTasklet())
.transactionManager(this.transactionManager).build())
.incrementer(new RunIdIncrementer()).build();
JobParameters jobParameters = new JobParametersBuilder().addLong("id", 1L, false).addLong("foo", 2L, false)
.toJobParameters();

View File

@@ -61,6 +61,7 @@ import org.springframework.context.annotation.Import;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.scheduling.concurrent.ConcurrentTaskExecutor;
import org.springframework.transaction.PlatformTransactionManager;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -188,6 +189,9 @@ public class TaskJobLauncherApplicationRunnerTests {
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public Job job() {
return this.jobBuilderFactory.get("job").start(this.stepBuilderFactory.get("step1").tasklet(new Tasklet() {
@@ -196,7 +200,7 @@ public class TaskJobLauncherApplicationRunnerTests {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}
}).build()).build();
}).transactionManager(transactionManager).build()).build();
}
}
@@ -215,6 +219,9 @@ public class TaskJobLauncherApplicationRunnerTests {
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public Job jobFail() {
return this.jobBuilderFactory.get("jobA").start(this.stepBuilderFactory.get("step1").tasklet(new Tasklet() {
@@ -223,7 +230,7 @@ public class TaskJobLauncherApplicationRunnerTests {
System.out.println("Executed");
throw new IllegalStateException("WHOOPS");
}
}).build()).build();
}).transactionManager(transactionManager).build()).build();
}
@Bean
@@ -235,7 +242,7 @@ public class TaskJobLauncherApplicationRunnerTests {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}
}).build()).build();
}).transactionManager(transactionManager).build()).build();
}
}

View File

@@ -28,6 +28,7 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.task.batch.configuration.TaskBatchTest;
import org.springframework.cloud.task.configuration.EnableTask;
@@ -77,7 +78,7 @@ public class PrefixTests {
.start(stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}).build()).build();
}).transactionManager(new ResourcelessTransactionManager()).build()).build();
}
@Bean

View File

@@ -28,6 +28,7 @@ import org.springframework.batch.core.configuration.annotation.EnableBatchProces
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.task.batch.configuration.TaskBatchTest;
import org.springframework.cloud.task.configuration.EnableTask;
@@ -76,7 +77,7 @@ class PrimaryKeyTests {
.start(stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}).build()).build();
}).transactionManager(new ResourcelessTransactionManager()).build()).build();
}
@Bean

View File

@@ -37,6 +37,7 @@ import org.springframework.batch.core.job.SimpleJob;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.batch.support.transaction.ResourcelessTransactionManager;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.annotation.Autowired;
@@ -62,6 +63,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
import org.springframework.transaction.PlatformTransactionManager;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -285,13 +287,16 @@ public class TaskBatchExecutionListenerTests {
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public Job job() {
return this.jobBuilderFactory.get("job")
.start(this.stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}).build()).build();
}).transactionManager(this.transactionManager).build()).build();
}
}
@@ -307,13 +312,16 @@ public class TaskBatchExecutionListenerTests {
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
PlatformTransactionManager transactionManager;
@Bean
public Job job() {
return this.jobBuilderFactory.get("job")
.start(this.stepBuilderFactory.get("step1").tasklet((contribution, chunkContext) -> {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}).build()).build();
}).transactionManager(transactionManager).build()).build();
}
}
@@ -330,6 +338,9 @@ public class TaskBatchExecutionListenerTests {
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public FactoryBean<Job> job() {
return new FactoryBean<Job>() {
@@ -340,7 +351,7 @@ public class TaskBatchExecutionListenerTests {
.tasklet((contribution, chunkContext) -> {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}).build())
}).transactionManager(transactionManager).build())
.build();
}
@@ -372,7 +383,7 @@ public class TaskBatchExecutionListenerTests {
System.out.println("Executed");
return RepeatStatus.FINISHED;
}
}).build()).build();
}).transactionManager(new ResourcelessTransactionManager()).build()).build();
}
@Bean
@@ -414,13 +425,16 @@ public class TaskBatchExecutionListenerTests {
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Autowired
private PlatformTransactionManager transactionManager;
@Bean
public Job job1() {
return this.jobBuilderFactory.get("job1")
.start(this.stepBuilderFactory.get("job1step1").tasklet((contribution, chunkContext) -> {
System.out.println("Executed job1");
return RepeatStatus.FINISHED;
}).build()).build();
}).transactionManager(transactionManager).build()).build();
}
@Bean
@@ -429,7 +443,7 @@ public class TaskBatchExecutionListenerTests {
.start(this.stepBuilderFactory.get("job2step1").tasklet((contribution, chunkContext) -> {
System.out.println("Executed job2");
return RepeatStatus.FINISHED;
}).build()).build();
}).transactionManager(transactionManager).build()).build();
}
}