【问题标题】:Spring Batch Java Config transaction-attributes equivalentSpring Batch Java Config 事务属性等效
【发布时间】:2014-05-28 19:08:29
【问题描述】:

在 Spring 批处理中,您可以像这样设置事务 isolationpropagation

<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 配置。

【问题讨论】:

    标签: java spring spring-batch


    【解决方案1】:

    它就在那里

    @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();
        }
    }
    

    对于默认实现,请查看http://docs.spring.io/spring/docs/4.0.5.RELEASE/javadoc-api/org/springframework/transaction/interceptor/package-summary.html

    【讨论】:

    • 如果我把事务属性如上所示,我得到编译错误 - 方法 reader(ItemReader) 未定义为 AbstractTaskletStepBuilder> 类型乙>。如果放在 writer() 之后和 build() 之前,则不会出错。
    【解决方案2】:

    就像迈克尔·普拉洛所说的那样。只需添加一个具体示例,您可以通过实例化默认事务属性来设置隔离级别:

    DefaultTransactionAttribute transactionWithIsolationReadCommited = new DefaultTransactionAttribute(); transactionWithIsolationReadCommited.setIsolationLevel(TransactionAttribute.ISOLATION_READ_COMMITTED);

    然后在步骤生成器中使用它。希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 2015-12-10
      • 2015-10-17
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多