java - Spring Batch-重构@StepScope bean
问题描述
我面临一个问题。当我将 FlatFileItemReader 和 Step 移动到单独的配置文件中时,它停止工作。
实际问题是它无法获取 jobParameters。
@Configuration
public class FileReader {
@Bean("personFileReader")
@StepScope
public FlatFileItemReader<Person> personFileReader(@Value("#(jobParameters['customerFile']") FileSystemResource fileName) {
System.out.println(
String.format("fileName = %s", fileName));
return new FlatFileItemReaderBuilder<Person>().name("personItemReader").resource(fileName).fixedLength()
.columns(getRange()).names(getNames()).targetType(Person.class).build();
}
批量配置
@Configuration
@EnableBatchProcessing
public class BatchConfiguration extends DefaultBatchConfigurer {
@Autowired
@Qualifier("personFileReader")
private FlatFileItemReader<Person> personFileReader;
@Bean
public Step step() {
return this.stepBuilderFactory.get("chunkStep").<Person, Person>chunk(10).reader(personFileReader)
.writer(dummyWriter).build();
}
错误
Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): file [D:\Data\Study\spring-batch\batch-process\#(jobParameters['customerFile']]
我不知道我做错了什么。
解决方案
@Value 注释似乎不正确
@Value("#(jobParameters['customerFile']")
应该
@Value("#{jobParameters['customerFile']}")
推荐阅读
- spring-boot - Cloud Run:Firestore 创建不起作用
- python - 用于在 Django admin 中选择相关对象 raw_id_field 的自定义弹出窗口
- python - 当进程持有独占行锁返回而不提交或关闭连接时,MySQL 连接器/Python 是如何检测到的?
- nlp - 运行 ALBERT 以从文本中获取编码向量时出现 RuntimeError
- nginx - 如何配置 NGINX 不缓存空的上游响应?
- jquery - 如果内容很大,Jqueru UI 工具提示会阻止点击移动浏览器
- magento - 如何为类别中不存在的页码显示 404
- automation - 我如何使用在 Jmeter 的下一个线程中生成的令牌
- python - 使用实体标尺和 ner 管道加载预训练的自定义模型时出现 Spacy 错误
- solidity - 为什么我的 prettier 去掉了 ABIEncoderV2?