Move the transaction manager configuration to AbstractTaskletStepBuilder
Before this commit, the transaction manager was configurable at the StepBuilder level, which is inconsistent with the XML config style in addition to be not needed for most step types. This commit moves the configuration of the transaction manager from the StepBuilder down to the AbstractTaskletStepBuilder, which is the level where the transaction manager is needed. Resolves #4130
This commit is contained in:
@@ -35,6 +35,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||
import org.springframework.jdbc.support.JdbcTransactionManager;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -92,7 +93,7 @@ class JobLauncherTestUtilsTests {
|
||||
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
|
||||
return null;
|
||||
}
|
||||
}).build();
|
||||
}).transactionManager(transactionManager(dataSource())).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -114,6 +115,11 @@ class JobLauncherTestUtilsTests {
|
||||
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").generateUniqueName(true).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JdbcTransactionManager transactionManager(DataSource dataSource) {
|
||||
return new JdbcTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
||||
import org.springframework.jdbc.support.JdbcTransactionManager;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@@ -130,6 +131,11 @@ public class SpringBatchTestJUnit4Tests {
|
||||
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JdbcTransactionManager transactionManager(DataSource dataSource) {
|
||||
return new JdbcTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@StepScope
|
||||
public ItemReader<String> stepScopedItemReader(@Value("#{stepExecutionContext['input.data']}") String data) {
|
||||
@@ -144,8 +150,11 @@ public class SpringBatchTestJUnit4Tests {
|
||||
|
||||
@Bean
|
||||
public Job job() {
|
||||
return this.jobBuilderFactory.get("job").start(this.stepBuilderFactory.get("step")
|
||||
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED).build()).build();
|
||||
return this.jobBuilderFactory.get("job")
|
||||
.start(this.stepBuilderFactory.get("step")
|
||||
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED)
|
||||
.transactionManager(transactionManager(dataSource())).build())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
||||
import org.springframework.jdbc.support.JdbcTransactionManager;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
@@ -124,6 +125,11 @@ public class SpringBatchTestJUnit5Tests {
|
||||
.addScript("/org/springframework/batch/core/schema-hsqldb.sql").build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JdbcTransactionManager transactionManager(DataSource dataSource) {
|
||||
return new JdbcTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@StepScope
|
||||
public ItemReader<String> stepScopedItemReader(@Value("#{stepExecutionContext['input.data']}") String data) {
|
||||
@@ -138,8 +144,10 @@ public class SpringBatchTestJUnit5Tests {
|
||||
|
||||
@Bean
|
||||
public Job job(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
|
||||
return jobBuilderFactory.get("job").start(stepBuilderFactory.get("step")
|
||||
.tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED).build()).build();
|
||||
return jobBuilderFactory.get("job")
|
||||
.start(stepBuilderFactory.get("step").tasklet((contribution, chunkContext) -> RepeatStatus.FINISHED)
|
||||
.transactionManager(transactionManager(dataSource())).build())
|
||||
.build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -43,8 +43,10 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;
|
||||
import org.springframework.jdbc.support.JdbcTransactionManager;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
@SpringJUnitConfig
|
||||
class StepScopeAnnotatedListenerIntegrationTests {
|
||||
@@ -103,6 +105,9 @@ class StepScopeAnnotatedListenerIntegrationTests {
|
||||
@Autowired
|
||||
private StepBuilderFactory stepBuilder;
|
||||
|
||||
@Autowired
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
@Bean
|
||||
JobLauncherTestUtils jobLauncherTestUtils() {
|
||||
return new JobLauncherTestUtils();
|
||||
@@ -116,6 +121,11 @@ class StepScopeAnnotatedListenerIntegrationTests {
|
||||
.setType(EmbeddedDatabaseType.HSQL).build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public JdbcTransactionManager transactionManager(DataSource dataSource) {
|
||||
return new JdbcTransactionManager(dataSource);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public Job jobUnderTest() {
|
||||
return jobBuilder.get("job-under-test").start(stepUnderTest()).build();
|
||||
@@ -123,7 +133,8 @@ class StepScopeAnnotatedListenerIntegrationTests {
|
||||
|
||||
@Bean
|
||||
public Step stepUnderTest() {
|
||||
return stepBuilder.get("step-under-test").<String, String>chunk(1).reader(reader()).processor(processor())
|
||||
return stepBuilder.get("step-under-test").<String, String>chunk(1)
|
||||
.transactionManager(this.transactionManager).reader(reader()).processor(processor())
|
||||
.writer(writer()).build();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user