2017-07-20 2 views
0

J'ai un processus de lot de printemps qui lit la valeur d'une table et l'écrit à un écrivain personnalisé. J'utilise Spring Scheduler pour exécuter le travail. Voici ma configuration pour le planificateur de printemps. Mais je reçois des valeurs nulles dans le lecteur. Je ne vois aucune erreur dans le journal, mon travail fonctionne bien mais la valeur du mois est nulle. (Cependant, utiliser ma valeur param dans ma requête pour que cela fonctionne pour la requête générique.)Valeur nulle venant dans mon lecteur personnalisé dans le lot de printemps

Mon Planificateur:

JobParameters param = new JobParametersBuilder() 
        .addLong("time", System.currentTimeMillis()) 
        .addString("date", "07-12-2017") // will be from a variable 
        .addString("month", "june")  // will be from a variable 
        .toJobParameters(); 

JobExecution execution = jobLauncher.run(job, param); 

Mon lecteur:

@Bean 
@StepScope 
public ItemReader<Bill> reader(@Value("#{jobParameters[month]}") String month) throws Exception { 

    System.out.println("*****************************"); 
    System.out.println("month ::::::: "+month); 
    System.out.println("*****************************"); 

    // My awesome database query here, where I will be using month. 

Le mois ci-dessus vient comme nul .

Mon lot Configuration:

@Bean 
public Job CreateBillJob(JobCompletionNotificationListener listener) throws Exception { 

    return jobBuilderFactory.get("createBill") 
      .incrementer(new RunIdIncrementer()) 
      .listener(listener) 
      .flow(step1()) 
      .end() 
      .build(); 
} 

private static final String OVERRIDDEN_BY_EXPRESSION = null; 

@Bean 
public Step step1() throws Exception { 
    return stepBuilderFactory.get("step1") 
      .<Bill, Bill> chunk(500) 
      .reader(billDataReader.reader(OVERRIDDEN_BY_EXPRESSION)) 
      .processor(processor()) 
      .writer(fileWriter) 
      .build(); 
} 

Toute aide sur ce qui est vraiment apprécié. Merci à tous.

Répondre

0

Je pense, il y a une seule citation manquante autour month, @Value("#{jobParameters['month']}" au lieu de @Value("#{jobParameters[month]}"

+0

Merci @SabirKhan, pour la réponse. J'ai essayé mais je ne travaille toujours pas, le même zéro arrive. – Karthik

+0

Je sais que cela semble étrange, mais j'ai ramené le lecteur à mon fichier de configuration de lot à partir de son fichier individuel et cela a fonctionné. Est-ce une bonne approche, je ne suis pas sûr. – Karthik