Spring Batch: у ItemReader есть проблемы в @Value («# {stepExecutionContext [filename]}») - PullRequest
0 голосов
/ 08 апреля 2019

Я использую Partitioner.Работа работает нормально, но когда я пытаюсь использовать stepExecutionContext для получения данных из класса Partitioner, я получаю его значение null в ItemReader:

@Bean
@StepScope
public FlatFileItemReader<ClassName> Reader(
        @Value("#{stepExecutionContext['fileResource']}") String file) {
    FlatFileItemReader<ClassName> fileReader=new FlatFileItemReader<ClassName>();
    fileReader.setResource(new ClassPathResource(file));
    return fileReader;
}

Класс Partitionner выглядит следующим образом:

public class PartitionerClass implements Partitioner {

   private String rep;

   @Override
   public Map<String, ExecutionContext> partition(int gridSize) {
    Map<String, ExecutionContext> partitionMap = new HashMap<String, ExecutionContext>();
    File dir = new File(rep);
    if (dir.isDirectory()) {
         File[] files = dir.listFiles();
           for (File file : files) {
               if(file.isFile()) {
                 ExecutionContext context = new ExecutionContext();
                 context.putString("fileResource", file.getName());
                 partitionMap.put(file.getName(), context);
                        }
                    }
                }
                return partitionMap;
            }
     public String getRep() {
      return rep;
       }

     public void setRep(String rep) {
     this.rep = rep;
        }
}

Класс вызывающего участника:

@Bean
    public FilesPartitioner partitioner() {
        PartitionerClass partitioner = new PartitionerClass();
        partitioner.setRep("MyDirectory");
        return partitioner;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...