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