Spring boot Spring批处理注释没有向Item Reader传递XML参数

Spring boot Spring批处理注释没有向Item Reader传递XML参数,spring-boot,spring-batch,Spring Boot,Spring Batch,我创建了一个简单的Boot/Spring批处理3.0.8.RELEASE作业。我创建了一个简单的类,它实现了JobParametersIncrementer,以便转到数据库,查找查询应该查找的天数,并将这些天数放入JobParameters对象中 我需要在JdbcCursorItemReader中使用该值,因为它是基于一个查找到的作业参数来选择数据的,但我无法通过Java注释来理解这一点。XML示例很多,但对Java来说就不多了 下面是我运行作业的BatchConfiguration类 ` @A

我创建了一个简单的Boot/Spring批处理3.0.8.RELEASE作业。我创建了一个简单的类,它实现了JobParametersIncrementer,以便转到数据库,查找查询应该查找的天数,并将这些天数放入JobParameters对象中

我需要在JdbcCursorItemReader中使用该值,因为它是基于一个查找到的作业参数来选择数据的,但我无法通过Java注释来理解这一点。XML示例很多,但对Java来说就不多了

下面是我运行作业的BatchConfiguration类

`

@Autowired
SendJobParms jobParms;//这家伙查询数据库并将数据放入JobParameters
@豆子
公共作业作业(@Qualifier(“step1”)步骤第1步,@Qualifier(“step2”)步骤第2步){
return jobs.get(“DW_Send”).incrementer(jobParms).start(step1).next(step2.build();
}
@豆子
受保护的步骤2(项目读取器,
项目编写器(项目编写器){
返回步骤。获取(“步骤2”)
.chunk(5000)
.读卡器(读卡器)
.作者(作者)
.build();
}
@豆子
公共JdbcCursorItemReader(){
JdbcCursorItemReader itemReader=新的JdbcCursorItemReader();
setDataSource(dataSource);
//希望在此处访问JobParameter,以便可以提取sql查询的值。

itemReader.setSql(“选择xxxx,其中rownum更改读卡器定义如下(类型为
Long
和name
paramCount
)的参数示例):

@Bean
@步进镜
公共JdbcCursorItemReader读取器(@Value(“#{jobParameters[paramCount]}”)长paramCount){
JdbcCursorItemReader itemReader=新的JdbcCursorItemReader();
setDataSource(dataSource);
setSql(“选择xxxx,其中rownum
@Autowired
SendJobParms jobParms; // this guy queries DB and puts data into JobParameters

@Bean
public Job job(@Qualifier("step1") Step step1, @Qualifier("step2") Step step2) {
    return jobs.get("DW_Send").incrementer(jobParms).start(step1).next(step2).build();
}

@Bean
protected Step step2(ItemReader<McsendRequest> reader,
                     ItemWriter<McsendRequest> writer) {
    return steps.get("step2")
            .<McsendRequest, McsendRequest> chunk(5000)
            .reader(reader)
            .writer(writer)
            .build();
}


@Bean
public JdbcCursorItemReader reader() {
    JdbcCursorItemReader<McsendRequest> itemReader = new JdbcCursorItemReader<McsendRequest>();
    itemReader.setDataSource(dataSource);

// want to get access to JobParameter here so I can pull values out for my sql query.
    itemReader.setSql("select xxxx where rownum <= JobParameter.getCount()");
    itemReader.setRowMapper(new McsendRequestMapper());
    return itemReader;
}
@Bean
@StepScope
public JdbcCursorItemReader reader(@Value("#{jobParameters[paramCount]}") Long paramCount) {
    JdbcCursorItemReader<McsendRequest> itemReader = new JdbcCursorItemReader<McsendRequest>();

    itemReader.setDataSource(dataSource);

    itemReader.setSql("select xxxx where rownum <= ?");

    ListPreparedStatementSetter listPreparedStatementSetter = new ListPreparedStatementSetter();
    listPreparedStatementSetter.setParameters(Arrays.asList(paramCount));
    itemReader.setPreparedStatementSetter(listPreparedStatementSetter);

    itemReader.setRowMapper(new McsendRequestMapper());
    return itemReader;
}