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