Spring Batch 4.0和Spring Boot 1.5.9

时间:2018-01-03 14:43:47

标签: spring-boot spring-batch

快速使用Spring Batch和Spring Boot只想使用注释。让演示应用程序https://spring.io/guides/gs/batch-processing/工作,使用hsqldb并且全部工作。之后我选择切换到oracle。我想使用存储库数据库表,因为我们的旧工作已经完成。当我切换到oracle 11g时,插入器进入spring批处理表会抱怨SERILIZABLE。因此,昨天花了很多时间来追逐这个,我明白我可能需要在jobrepository上设置隔离级别。问题是没有网站进入这个,显示xml / java的文档也没有明确解释。我查看Spring Batch github中的示例,但也找不到任何内容。是否有一个如何创建和作业存储库并更改此隔离级别的示例?此时燃烧时间没有前进动作。

尝试以下代码设置隔离并获取:BatchConfigurationException:java.lang.IllegalArgumentException:无效的事务属性标记:[READ_COMMITTED]

public class BatchConfiguration extends DefaultBatchConfigurer {
    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    private PlatformTransactionManager transactionManager;


    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Autowired
    private DataSource dataSource;

    @Override
    protected JobRepository createJobRepository() throws Exception {
        JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
        factory.setDataSource(dataSource);
        factory.setTransactionManager(transactionManager);
          factory.setIsolationLevelForCreate("READ_COMMITTED");
        //     factory.setTablePrefix("BATCH_");
        factory.setMaxVarCharLength(1000);
        return factory.getObject();
    }

    @Bean
    public JdbcCursorItemReader<BusnPrtnr> itemReader() {
        return new JdbcCursorItemReaderBuilder<BusnPrtnr>()
                .dataSource(dataSource)
...

1 个答案:

答案 0 :(得分:1)

此处的Java代码示例中存在错误:https://docs.spring.io/spring-batch/4.0.x/reference/html/job.html#txConfigForJobRepository

应该是factory.setIsolationLevelForCreate("ISOLATION_REPEATABLE_READ");而不是factory.setIsolationLevelForCreate("REPEATABLE_READ");

XML代码示例是正确的(XML解析器adds场景后面的ISOLATION_前缀。)

此处有一个解决此问题的拉取请求:https://github.com/spring-projects/spring-batch/pull/577/files#diff-de2cb44d4395c5ad35d1fc05bbace8f1R620

修复程序将是4.0.1版本的一部分。