Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想将第一步的数据传递给第二步的读取器_Java_Spring_Spring Batch - Fatal编程技术网

Java 我想将第一步的数据传递给第二步的读取器

Java 我想将第一步的数据传递给第二步的读取器,java,spring,spring-batch,Java,Spring,Spring Batch,我使用spring批处理来执行以下工作流: 步骤1:读取一个大的CSV并将其放入地图中 步骤2:从上一张图中,我必须做一个业务逻辑 我创建了一个名为CourseCsvRepository的bean,以便将映射的csv保存到此映射(单例bean): 我想和大家分享一下前一个问题的答案: 我的bean需要在步骤范围内,以便它们能够在每个步骤接收stepExecutionContext参数。如果它们不属于步骤范围,那么它们的bean将在最初创建,并且不会接受步骤级别的填充映射 @StepScope

我使用spring批处理来执行以下工作流:

  • 步骤1:读取一个大的CSV并将其放入地图中
  • 步骤2:从上一张图中,我必须做一个业务逻辑
我创建了一个名为CourseCsvRepository的bean,以便将映射的csv保存到此映射(单例bean):


我想和大家分享一下前一个问题的答案:

我的bean需要在步骤范围内,以便它们能够在每个步骤接收stepExecutionContext参数。如果它们不属于步骤范围,那么它们的bean将在最初创建,并且不会接受步骤级别的填充映射

@StepScope:

@Bean
@步进镜
PublicItemReader readFromMap(){
ListItemReader=新的ListItemReader(新的ArrayList(courseCsvRepository.getMap().values());
返回读取器;
}
@Component
public class CourseCsvRepository {

    private Map<String, List<Course>> courseMappedByKey = new HashMap<>();


    public void addToMap(Course course){

        String key = "";
        key= key.concat(String.valueOf(course.getCodeStifLigne())).concat(course.getAntenne()).concat(String.valueOf(course.getIdtm())).concat(String.valueOf(course.getIdmiss())).concat(String.valueOf(course.getCourse())).concat(course.getNommiss());

        if(courseMappedByKey.containsKey(key)){
            courseMappedByKey.get(key).add(course);
        }else {
            final ArrayList<Course> list = new ArrayList<>();
            list.add(course);
            courseMappedByKey.put(key, list);
        }
    }

    public Map<String, List<Course>> getMap(){
        return this.courseMappedByKey;
    }

    public List<Course> getByKey(String key){
        return this.courseMappedByKey.get(key);
    }


}
@Bean
public ItemReader<List<Course>> readFromMap(){

    ListItemReader<List<Course>> reader = new ListItemReader<List<Course>>(new ArrayList(courseCsvRepository.getMap().values()));

    return reader;
}
@Bean
public Job writeCsvToDbJob() {
    return jobBuilderFactory.get("writeCsvToDbJob")
            .incrementer(new RunIdIncrementer())
            .start(step1())
            .next(step2())
            .build();
}
@Bean
@StepScope
public ItemReader<List<Course>> readFromMap(){

    ListItemReader<List<Course>> reader = new ListItemReader<List<Course>>(new ArrayList(courseCsvRepository.getMap().values()));

    return reader;
}