Spring批处理Java配置事务属性等效
在Spring batch中,您可以如下设置事务Spring批处理Java配置事务属性等效,java,spring,spring-batch,Java,Spring,Spring Batch,在Spring batch中,您可以如下设置事务隔离和传播: <job id="someJob" xmlns="http://www.springframework.org/schema/batch"> <step id="readWriteDate"> <tasklet transaction-manager="transactionManager"> <transaction-attributes isolatio
隔离
和传播
:
<job id="someJob" xmlns="http://www.springframework.org/schema/batch">
<step id="readWriteDate">
<tasklet transaction-manager="transactionManager">
<transaction-attributes isolation="DEFAULT" propagation="REQUIRED" timeout="30"/>
<chunk reader="dbItemReader" processor="dbItemProcessor" writer="dbItemWriter"
commit-interval="2" />
</tasklet>
</step>
</job>
我找不到java配置的等价物。它就在那里
@Configuration
public class StepWithTx {
@Autowired
private StepBuilderFactory steps;
@Bean
public Step step() throws Exception {
return steps
.get("CustomTxStep")
.<String, String>chunk(10)
.transactionAttribute(transactionAttribute...)
.reader(reader...)
.processor(processor...)
.writer(writer...)
.build();
}
}
@配置
公共类StepWithTx{
@自动连线
私人StepBuilderFactorySteps;
@豆子
公共步骤()引发异常{
返回步骤
.get(“CustomTxStep”)
.chunk(10)
.transactionAttribute(transactionAttribute…)
.读卡器(读卡器…)
.处理器(处理器…)
.作者(作者…)
.build();
}
}
对于默认实现,请看一下它就在那里
@Configuration
public class StepWithTx {
@Autowired
private StepBuilderFactory steps;
@Bean
public Step step() throws Exception {
return steps
.get("CustomTxStep")
.<String, String>chunk(10)
.transactionAttribute(transactionAttribute...)
.reader(reader...)
.processor(processor...)
.writer(writer...)
.build();
}
}
@配置
公共类StepWithTx{
@自动连线
私人StepBuilderFactorySteps;
@豆子
公共步骤()引发异常{
返回步骤
.get(“CustomTxStep”)
.chunk(10)
.transactionAttribute(transactionAttribute…)
.读卡器(读卡器…)
.处理器(处理器…)
.作者(作者…)
.build();
}
}
对于默认实现,请看一看,就像Michael Pralow所说的那样。仅添加一个具体示例,您可以通过实例化默认事务属性来设置隔离级别: DefaultTransactionAttribute transactionWithIsolationReadCommited = new DefaultTransactionAttribute(); transactionWithIsolationReadCommited.setIsolationLevel(TransactionAttribute.ISOLATION_READ_COMMITTED); DefaultTransactionAttribute TransactionWithIsolationReadCommitted=新建DefaultTransactionAttribute(); TransactionWithIsolationReadCommitted.setIsolationLevel(TransactionAttribute.ISOLATION\u READ\u COMMITTED);
然后在步骤生成器中使用它。希望有帮助 就像迈克尔·普拉洛说的那样。仅添加一个具体示例,您可以通过实例化默认事务属性来设置隔离级别: DefaultTransactionAttribute transactionWithIsolationReadCommited = new DefaultTransactionAttribute(); transactionWithIsolationReadCommited.setIsolationLevel(TransactionAttribute.ISOLATION_READ_COMMITTED); DefaultTransactionAttribute TransactionWithIsolationReadCommitted=新建DefaultTransactionAttribute(); TransactionWithIsolationReadCommitted.setIsolationLevel(TransactionAttribute.ISOLATION\u READ\u COMMITTED);
然后在步骤生成器中使用它。希望有帮助 如果我像上面所示放置事务属性,我会得到编译错误-AbstractTaskletStepBuilder类型的方法读取器(ItemReader)未定义。如果在writer()之后和build()之前放置,则不会出现错误。如果如上图所示放置事务属性,则会出现编译错误-类型AbstractTaskletStepBuilder的方法读取器(ItemReader)未定义。如果在writer()之后和build()之前放置,则不会获得错误。