problème d'exécution itemReader
Bonjour à tous :),
j'ai actuellement un batch possédant 2 jobs
Le soucis est lorsque j'appelle soit le job n°1, soit le job n°2, en ligne de commande avec --spring.batch.job.names=job1Name
toutes mes classes implémentant Itemreader sont exécutées à l'initialisation (celles utilisées pour le job n°1 et celle du job n°2)
si je mets des logs j'obtiens ceci :
Code:
1 2 3 4 5
|
start reader 1
start reader 2
start reader 3
start reader 4 |
avec ce code simplifié :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
@Configuration
public class Job1Class
{
...
@Bean
public @NonNull Job job1(){
return jobBuilder.get("job1Name")
.start(step1())
.next(step2())
.build();
}
@Bean
public @NonNull Step step1()
{
return stepBuilder.get("step1")
.<MyClass, MyClass>chunk(1024)
.reader(reader1())
.processor(processor1())
.writer(writer1())
.build();
}
@Bean
public @NonNull Step step2()
{
return stepBuilder.get("step2")
.<MyClass, MyClass>chunk(1024)
.reader(reader2())
.processor(processor2())
.writer(writer2())
.build();
}
@Bean
public @NonNull ItemReader<MyClass> reader1()
{
log.debug("start reader 1");
//code
}
@Bean
public @NonNull ItemReader<MyClass> reader2()
{
log.debug("start reader 2");
//code
}
...
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
@Configuration
public class Job2Class
{
...
@Bean
public @NonNull Job job2(){
return jobBuilder.get("job2Name")
.start(step3())
.next(step4())
.build();
}
@Bean
public @NonNull Step step3()
{
return stepBuilder.get("step3")
.<MyClass, MyClass>chunk(1024)
.reader(reader3())
.processor(processor3())
.writer(writer3())
.build();
}
@Bean
public @NonNull Step step4()
{
return stepBuilder.get("step4")
.<MyClass, MyClass>chunk(1024)
.reader(reader4())
.processor(processor4())
.writer(writer4())
.build();
}
@Bean
public @NonNull ItemReader<MyClass> reader3()
{
log.debug("start reader 3");
//code
}
@Bean
public @NonNull ItemReader<MyClass> reader4()
{
log.debug("start reader 4");
//code
}
...
} |
Que faut-il faire pour qu'il n'y ai que reader1 et reader 2 qui s'initialise quand je lance le job N°1
et donc que reader 3 et reader 4 pour le job N°2 ?
Merci d'avance de votre aide :D