![](/img/trans.png)
[英]How to test a single step in Spring Batch without running others?
[英]Running a Spring Batch step in a single transaction
我正在编写 Spring 批处理作业以:
到目前为止,我的解决方案包括:
如何确保整个步骤在单个事务中运行? 只有当该步骤成功时,我才能提交数据库UPDATE
。
以下是相关的基于 Java 的配置代码:
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<Person, Person>chunk(...)
.reader(...)
.processor(...)
.writer(compositeWriter())
.build();
}
@Bean
public CompositeItemWriter<Person> compositeWriter() {
return new CompositeItemWriterBuilder<Person>()
.delegates(..., jdbcWriter())
.build();
}
@Bean
public JdbcBatchItemWriter<Person> jdbcWriter(DataSource dataSource) {
return new JdbcBatchItemWriterBuilder<Person>()
.itemSqlParameterSourceProvider(...)
.sql("UPDATE ...")
.dataSource(dataSource)
.build();
}
在单个事务中运行整个步骤首先不是面向块的处理 model 的目的。 原因显然与处理大量数据时相关的长时间运行的事务有关。
也就是说,没有什么能阻止您创建一个自定义步骤实现,如果这对您有用,那么它可以在单个事务中完成工作,即使我不建议这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.