jobParameters est introuvable sur l’objet de type BeanExpressionContext

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