我想写一个有两个步骤的Spring Batch作业。他们都是同一步,但具有不同的文件位置。因此,我需要将多个字符串传递给作业bean,让步骤知道发送不同文件的位置。但是,我尝试传递资源值,我得到一个NoSuchBeanDefinitionException。我发现的答案是,我需要向bean添加一个@Value来告诉它bean需要一个参数来工作。 但这只是一个值。将多个@Value传递到java类中的@Bean中
有没有办法将多个@Values传递给使用java配置的bean?以下是我正在使用的代码。
@Value("#{'${batch.outputFile}'}")
Resource outputFilePath;
@Value("#{'${batch.outputFileTrg}'}")
Resource outputFilePathTrg;
@Bean
public Step toServerStep(Resource outputFile) {
return stepBuilderFactory.get("toServerStep")
.chunk(1)
.reader(xmlFileItemReader())
.writer((ItemWriter<? super Object>) flatFileItemWriter(outputFile))
.build();
}
@Bean
public Job fileToServerJob(JobBuilderFactory jobBuilderFactory){
return jobBuilderFactory.get("fileToServerJob")
.start(toServerStep(outputFilePath1))
.next(toServerStep(outputFilePath2))
.build();
}
从属性文件你不能得到资源。你只能得到一些网址或数据,例如Integer等。 – Mikhail