gpt4 book ai didi

java - 如何从 Spring Boot 向 Spring Batch 传递参数

转载 作者:行者123 更新时间:2023-11-30 05:39:01 25 4
gpt4 key购买 nike

我搜索了如何将 springboot 参数传递给我的 spring 批处理作业的解决方案,然后在我的编写器中获取参数的值。当我加载作家中的 key 时仍然为空。有人可以帮助我吗?

    @GetMapping("/load/{id}")
public BatchStatus load (@PathVariable String id) throws
JobExecutionException {
JobParameters jobParameters = new JobParametersBuilder()
.addLong("time", System.currentTimeMillis())
.addString("key", id).toJobParameters();

JobExecution jobExecution = jobLauncher.run(job, jobParameters);

return jobExecution.getStatus();
}

这是我的批处理代码配置

@Configuration
@EnableBatchProcessing
public class BatchConfig {

@Value("${path.to.react.file}")
private Resource resource;

@Autowired
public JobBuilderFactory jobBuilderFactory;

@Autowired
public StepBuilderFactory stepBuilderFactory;

@Autowired
UserDao userDao;

@Value("#{jobParameters['key']}")
private String pathToFile;

@Bean
public Job job() {
return jobBuilderFactory.get("readCSVFilesJob")
.incrementer(new RunIdIncrementer())
.start(step())
.build();
}

@Bean
public Step step() {
return stepBuilderFactory.get("step1").<UserDTO,
UserDTO>chunk(100)
.reader(Reader.reader(resource))
.processor(new Processor())
.writer(new Writer(userDao))
.build();
}
}

还有我的作家

@StepScope
public class Writer implements ItemWriter<UserDTO> {


private UserDao userDao;

@Value("#{jobParameters['key']}")
private String key;

public Writer(UserDao userDao) {
this.userDao = userDao;

}

@Override
public void write(List<? extends UserDTO> items) throws Exception {
userDao.writePnoFile(items);
}

}

最佳答案

@Scope("step")添加到您的编写器中,然后通过@Value注释注入(inject)参数:

@Value("#{jobParameters['key']}")
String key;

关于java - 如何从 Spring Boot 向 Spring Batch 传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com