Spring boot 弹簧批次4.0和弹簧护套1.5.9
使用SpringBatch和SpringBoot来加快速度,希望只使用注释。让使用hsqldb的演示应用程序正常工作,并且全部正常工作。在那之后,我选择了转用oracle。我希望像以前的作业一样使用存储库数据库表。当我切换到Oracle11g时,spring批处理表中的插入器会抱怨SERILIZABLE。所以昨天花了很大一部分时间来研究这个问题,我知道我可能需要在jobrepository上设置一个隔离级别。问题是,没有网站对此进行讨论,显示xml/java的文档也没有清楚地解释。我查看了SpringBatch github中的示例,但在那里也找不到任何内容。是否有一个例子说明了如何创建作业存储库并更改此存储库的隔离级别?此时燃烧数小时,无向前运动 尝试以下代码设置隔离并获取:BatchConfigurationException:java.lang.IllegalArgumentException:Invalid transaction attribute token:[READ_COMMITTED]Spring boot 弹簧批次4.0和弹簧护套1.5.9,spring-boot,spring-batch,Spring Boot,Spring Batch,使用SpringBatch和SpringBoot来加快速度,希望只使用注释。让使用hsqldb的演示应用程序正常工作,并且全部正常工作。在那之后,我选择了转用oracle。我希望像以前的作业一样使用存储库数据库表。当我切换到Oracle11g时,spring批处理表中的插入器会抱怨SERILIZABLE。所以昨天花了很大一部分时间来研究这个问题,我知道我可能需要在jobrepository上设置一个隔离级别。问题是,没有网站对此进行讨论,显示xml/java的文档也没有清楚地解释。我查看了Spr
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)
...
公共类BatchConfiguration扩展了DefaultBatchConfigurer{
@自动连线
公共建筑商建筑商工厂;
@自动连线
私有平台transactionManager transactionManager;
@自动连线
公共StepBuilderFactory StepBuilderFactory;
@自动连线
私有数据源;
@凌驾
受保护的JobRepository createJobRepository()引发异常{
JobRepositoryFactoryBean工厂=新的JobRepositoryFactoryBean();
setDataSource(数据源);
factory.setTransactionManager(transactionManager);
factory.setIsolationLevelForCreate(“读取已提交”);
//factory.setTablePrefix(“批次”);
工厂。setMaxVarCharLength(1000);
返回factory.getObject();
}
@豆子
公共JdbcCursorItemReader itemReader(){
返回新的JdbcCursorItemReaderBuilder()
.dataSource(数据源)
...
此处的Java代码示例中有一个错误:
它应该是factory.setIsolationLevelForCreate(“隔离可重复读取”);
而不是factory.setIsolationLevelForCreate(“可重复读取”);
XML代码示例是正确的(XML解析器在幕后使用隔离
前缀)
此处存在修复此问题的请求:
该修复程序将是4.0.1版本的一部分。请尽量坚持事实。您的问题读起来像个故事。据我所知,spring batch 4.0要求您使用spring boot 2.0。它不是设计用于spring boot 1.x的。您仍然可以使用spring batch 3.x和spring boot 1.5.x的注释。请尝试更改spring batch版本。