Эквивалент атрибутов транзакции Spring Batch Java Config

1

Весной вы можете установить isolation и propagation транзакций следующим образом:

<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 config.

Теги:
spring
spring-batch

2 ответа

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

  • 1
    Если я добавлю атрибут транзакции, как показано выше, я получу ошибку компиляции - читатель метода (ItemReader <String>) не определен для типа AbstractTaskletStepBuilder <SimpleStepBuilder <String, String >> . Не получить ошибку, если поставить после writer () и перед build ().
1

Это похоже на Майкла Пралоу. Чтобы добавить конкретный пример, вы можете установить уровень изоляции, создав экземпляр атрибута транзакции по умолчанию:

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

И затем используйте его в построителе шагов. Надеюсь, поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню