jobParameters est introuvable sur l'objet de type BeanExpressionContext
Créez une tâche batch Spring simple pour écrire des données dans un fichier csv. Le nom du fichier csv dépend de la transmission des paramètres du travail, interprété par Spring EL.
job-sample.xml
Test unitaire au-dessus du travail:
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);
}
}
Problème
Il affiche le message d'erreur «JobParameters introuvable»:
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)
Solution
Le beanjobParameters ne peut pas être réellement instancié tant que le «Step» ne démarre pas. Pour y remédier, une liaison tardive avec une portée de «Step» est requise.
job-sample.xml