jobParameters kann nicht für ein Objekt vom Typ BeanExpressionContext gefunden werden

jobParameters kann für ein Objekt vom Typ BeanExpressionContext nicht gefunden werden

Erstellen Sie einen einfachen Spring-Batch-Job, um Daten in eine CSV-Datei zu schreiben. Der Name der CSV-Datei hängt von der Übergabe der Auftragsparameter ab, die von Spring EL interpretiert wird.

job-sample.xml



  
  

  
  
      
    
    
        
        
        
    
      
  

Unit Test über Job:

public class TestSampleJob extends AbstractTestNGSpringContextTests {

    @Autowired
    private JobLauncherTestUtils jobLauncherTestUtils;

    @Test
    public void launchJob() throws Exception {

        JobParameters jobParameters =
            new JobParametersBuilder().addString("pid", "10").toJobParameters();

        JobExecution jobExecution = jobLauncherTestUtils.launchJob(jobParameters);
        Assert.assertEquals(jobExecution.getStatus(), BatchStatus.COMPLETED);

    }
}

Problem

Es wird die Fehlermeldung "jobParameters kann nicht gefunden werden" angezeigt:

Caused by: org.springframework.expression.spel.SpelEvaluationException:
    EL1008E:(pos 0): Field or property 'jobParameters' cannot be found on object
    of type 'org.springframework.beans.factory.config.BeanExpressionContext'
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:208)
    at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:72)
    at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:52)

Lösung

DiejobParameters-Bohne kann erst instanziiert werden, wenn der „Schritt“ beginnt. Um dies zu beheben, ist eine späte Bindung mit einem Umfang von "Step" erforderlich.

job-sample.xml