小编DBr*_*ker的帖子

在创建 spring 批处理 bean 时获取“当前线程的作用域‘步骤’未激活”

在我的 Spring 批处理配置中,我试图设置一个分区步骤,它从 JobParameters 访问值,如下所示:

@Bean
@Qualifier("partitionJob")
public Job partitionJob() throws Exception {

    return jobBuilderFactory
            .get("partitionJob")
            .incrementer(new RunIdIncrementer())
            .start(partitionStep(null))
            .build();
}

@Bean
@StepScope //I'm getting exception here - > Error creating bean 
public Step partitionStep(
        @Value("#{jobParameters[gridSize]}") String gridSize)
        throws Exception {

    return stepBuilderFactory
            .get("partitionStep")
            .partitioner("slaveStep", partitioner())
            .gridSize(
                    StringUtils.isEmpty(gridSize) ? 10 : Integer
                            .parseInt(gridSize))
            .step(slaveStep(50000))
            .taskExecutor(threadPoolTaskExecutor()).build();
}

@Bean
@StepScope
public Step slaveStep(int chunkSize) throws Exception {

    return stepBuilderFactory
            .get("slaveStep")
            .<Person,Person> chunk(chunkSize)
            .reader(jdbcPagingItemReader()),
            .writer(csvFileWriterParts())
            .listener(stepExecutionListener()).build();
}
Run Code Online (Sandbox Code Playgroud)

我在 SpringBoot 应用程序中添加了 @EnableBatchProcessing 注释。

由于我想在构建步骤时访问 …

spring spring-batch

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

spring ×1

spring-batch ×1