【Spring-boot】spring-batch伝達パラメータ問題
13022 ワード
Spring-boot統合spring-batch伝達パラメータの一般的な方法は:
このとき、戻り値JdbcPagingItemReaderのパラメータ「date」は一定値であり、日付が進むにつれて変化しません.だからjobParametersでパラメータを伝えることができます jobParameters を設定パラメータ をとる
3.呼び出し
@Bean("step1Reader")
public JdbcPagingItemReader<T> step1Reader(DataSource dataSource) {
Map<String, Order> sortKeys = Maps.newHashMap();
sortKeys.put("id", Order.ASCENDING);
Map<String, Object> params = Maps.newHashMap();
params.put("date", DateUtil.getUTC8LocalDateTime().toDate());
return new JdbcPagingItemReaderBuilder<T>()
.fetchSize(readFetchSize)
.selectClause("select *")
.fromClause("from test")
.whereClause("where credit_time < :date")
.parameterValues(params)
.sortKeys(sortKeys)
.saveState(false)
.rowMapper(new BeanPropertyRowMapper<T>())
.dataSource(dataSource)
.name("step1Reader")
.build();
}
このとき、戻り値JdbcPagingItemReaderのパラメータ「date」は一定値であり、日付が進むにつれて変化しません.だからjobParametersでパラメータを伝えることができます
new JobParametersBuilder()
.addString("date", DateUtil.getUTC8LocalDateTime().toDate().toString())
.toJobParameters();
@Bean("step1Reader")
@StepScope
//Spring Batch bean scope (StepScope: Spring bean scope)。 step scope batches steps。 Spring beans steps step 。
public JdbcPagingItemReader<T> step1Reader(@Value("#{jobParameters[date]}") String date, DataSource dataSource) {
Map<String, Order> sortKeys = Maps.newHashMap();
sortKeys.put("id", Order.ASCENDING);
Map<String, Object> params = Maps.newHashMap();
return new JdbcPagingItemReaderBuilder<T>()
.fetchSize(readFetchSize)
.selectClause("select *")
.fromClause("from test")
.whereClause("where credit_time < date('"+date+"')")
.parameterValues(params)
.sortKeys(sortKeys)
.saveState(false)
.rowMapper(new BeanPropertyRowMapper<T>())
.dataSource(dataSource)
.name("step1Reader")
.build();
}
3.呼び出し
// null
//https://blog.codecentric.de/en/2013/06/spring-batch-2-2-javaconfig-part-2-jobparameters-executioncontext-and-stepscope/
step1Reader(null, dataSource);