How to get Job parameteres in to item processor using spring Batch annotation

前端 未结 2 592
一个人的身影
一个人的身影 2020-12-30 13:34

I am using spring MVC. From my controller, I am calling jobLauncher and in jobLauncher I am passing job parameters like below and I\'m using annota

相关标签:
2条回答
  • 2020-12-30 13:50

    1) Put a scope annotation on your data processor i.e.

    @Scope(value = "step") 
    

    2) Make a class instance in your data processor and inject the job parameter value by using value annotation :

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

    Your final Data processor class will look like:

    @Scope(value = "step")
    public class DataItemProcessor implements ItemProcessor<InputData, OutPutData> {
    
    @Value("#{jobParameters['fileName']}")
    private String fileName;
    
      public OutPutData process(final InputData inputData) throws Exception {
    
            // i want to get job Parameters here ????
          System.out.println("Job parameter:"+fileName);
    
      }
    
      public void setFileName(String fileName) {
            this.fileName = fileName;
        }
    
    
    }
    

    In case your data processor is not initialized as a bean, put a @Component annotation on it:

    @Component("dataItemProcessor")
    @Scope(value = "step")
    public class DataItemProcessor implements ItemProcessor<InputData, OutPutData> {
    
    0 讨论(0)
  • 2020-12-30 13:59

    A better solution (in my opinion) that avoids using Spring's hacky expression language (SpEL) is to autowire the StepExecution context into your processor using @BeforeStep.

    In your processor, add something like:

    @BeforeStep
    public void beforeStep(final StepExecution stepExecution) {
        JobParameters jobParameters = stepExecution.getJobParameters();
        // Do stuff with job parameters, e.g. set class-scoped variables, etc.
    }
    

    The @BeforeStep annotation

    Marks a method to be called before a Step is executed, which comes after a StepExecution is created and persisted, but before the first item is read.

    0 讨论(0)
提交回复
热议问题