Hello tous,

je rencontre un problème en ce moment sur comment fait on pour passer les paramètres rest (spring boot ) vers spring batch .

je m'explique : j'ai un service rest qui a des paramètres et j'aimerais le faire passer à mon job spring batch. voici ce que j''ai fait jusque là :

Service rest
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
@GetMapping("/load/{id}")
   public BatchStatus load (@PathVariable String id) throws
   JobExecutionException {
   JobParameters jobParameters = new JobParametersBuilder()
               .addLong("time", System.currentTimeMillis())
               .addString("key", id).toJobParameters();
 
       JobExecution jobExecution = jobLauncher.run(job, jobParameters);
 
       return jobExecution.getStatus();
   }
Mon batch config

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
@Configuration
@EnableBatchProcessing
public class BatchConfig {
 
    @Value("${path.to.react.file}")
    private Resource resource;
 
    @Autowired
    public JobBuilderFactory jobBuilderFactory;
 
    @Autowired
    public StepBuilderFactory stepBuilderFactory;
 
    @Autowired
    UserDao userDao;
 
    @Bean
    public Job job() {
        return jobBuilderFactory.get("readCSVFilesJob")
                .incrementer(new RunIdIncrementer())
                .start(step())
                .build();
    }
 
    @JobScope
    @Bean
    public Step step() {
        return stepBuilderFactory.get("step1").<UserDTO, UserDTO>chunk(100)
                .reader(Reader.reader(resource))
                .processor(new Processor())
                .writer(new Writer(userDao))
                .build();
    }
}
Mon Reader
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
public final class Reader  {
 
    /**
     * Constructor
     */
    private Reader() {
    }
 
    /**
     * Reader for read CSV file
     * @param resource
     * @return
     */
    public static FlatFileItemReader<UserDTO> reader (Resource resource) {
 
        FlatFileItemReader<UserDTO> flatFileItemReader = new FlatFileItemReader<>();
        flatFileItemReader.setResource(resource);
        flatFileItemReader.setName("CSV-React");
        flatFileItemReader.setLinesToSkip(1);
        flatFileItemReader.setLineMapper(lineMapper());
        return flatFileItemReader;
    }
 
 
    /**
     * The line mapper
     * @return
     */
    private static LineMapper<UserDTO> lineMapper() {
 
        DefaultLineMapper<UserDTO> defaultLineMapper = new DefaultLineMapper<>();
        DelimitedLineTokenizer lineTokenizer = new DelimitedLineTokenizer();
 
        lineTokenizer.setDelimiter(";");
        lineTokenizer.setStrict(false);
        lineTokenizer.setNames("AC Program", "Request Number", "Request Type", "Creation Date", "User ID", "User Name",
               "User Company", "Requestor ID", "Requestor Name", "Application", "Criteria", "Last Status", "Last Updated By",
                "Last Status Date", "Applicable Workflown Name", "KO");
 
        BeanWrapperFieldSetMapper<UserDTO> fieldSetMapper = new BeanWrapperFieldSetMapper<>();
        fieldSetMapper.setTargetType(UserDTO.class);
 
        defaultLineMapper.setLineTokenizer(lineTokenizer);
        defaultLineMapper.setFieldSetMapper(fieldSetMapper);
 
        return defaultLineMapper;
 
    }
ainsi que le writer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
@Component
@StepScope
public class Writer implements ItemWriter<UserDTO> {
 
 
    private  UserDao userDao;
 
    @Value("#{jobParameters['key']}")
    private String key;
 
    public Writer(UserDao userDao) {
        this.userDao = userDao;
 
    }
 
    @Override
    public void write(List<? extends UserDTO> items) throws Exception {
        userDao.writePnoFile(items);
    }
}
Dans mon writer je n'arrive pas à récuperer la valeur de mon paramètre. y a t il quelqu'un pour m'aider svp ?
Merci d'avance

PS : j'ai fait expres d'omettre la partie process.