Java JdbcBatchItemWriter多线程

Java JdbcBatchItemWriter多线程,java,spring,jdbc,spring-batch,Java,Spring,Jdbc,Spring Batch,有没有办法让JdbcBatchItemWriter多线程运行。 我有一批应该插入许多行(+1M行) @Bean 公共JdbcBatchItemWriter InitWriter(){ JdbcBatchItemWriter writer=新的JdbcBatchItemWriter(); writer.setItemSqlParameterSourceProvider(新的BeanPropertyItemSqlParameterSourceProvider()); writer.setSql(“插

有没有办法让JdbcBatchItemWriter多线程运行。 我有一批应该插入许多行(+1M行)

@Bean
公共JdbcBatchItemWriter InitWriter(){
JdbcBatchItemWriter writer=新的JdbcBatchItemWriter();
writer.setItemSqlParameterSourceProvider(新的BeanPropertyItemSqlParameterSourceProvider());
writer.setSql(“插入…”);
writer.setDataSource(cloudDataSource);
返回作者;
}

这花了我很多时间。

JdbcBatchItemWriter是线程安全的,因此您可以在多个并发事务中使用它。以下是它的一段摘录:

writer的属性设置后是线程安全的(正常的单例行为),因此它可以用于写入多个并发事务


因此,在您的情况下,您可以尝试使用,看看它是否提高了作业的性能。

这将非常有用。无需并行执行JdbcBatchItemWriter,让Spring Batch通过分区来处理它。这是否回答了您的问题?
@Bean
public JdbcBatchItemWriter<MyDTO> InitWriter() {
    JdbcBatchItemWriter<MyDTO> writer = new JdbcBatchItemWriter<MyDTO>();
    writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<MyDTO>());
    writer.setSql("INSERT INTO ....");
    writer.setDataSource(cloudDataSource);

    return writer;
}