Получить параметр командной строки в качестве параметров пакетного задания пружины для @Scheduled весенней загрузки - PullRequest
0 голосов
/ 30 октября 2018

Ниже мой основной класс с пружинной загрузкой, где у меня @Scheduled бобы

@EnableScheduling
@EnableBatchProcessing
@SpringBootApplication(scanBasePackages = { "com.mypackage" })
public class MyMain {

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job job;


    public static void main(String[] args) throws Exception {

        SpringApplication.run(MyMain.class, args);
    }


    @Scheduled(cron = "0 00 05 * * ?")
    private void perform() throws Exception {
        jobLauncher.run(job, new JobParameters());
    }
}

Я буду получать параметры из командной строки, которые мне нужно указать в качестве параметров задания. Как можно добиться того же, что и для @Scheduled аннотированные методы не принимают ни одного параметра.

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете добавить бин типа ApplicationArguments и использовать его для получения аргументов приложения:

@EnableScheduling
@EnableBatchProcessing
@SpringBootApplication
public class MyMain {

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job job;

    @Autowired
    private ApplicationArguments applicationArguments;


    public static void main(String[] args) throws Exception {
        SpringApplication.run(MyMain.class, args);
    }

    @Scheduled(cron = "0 00 05 * * ?")
    private void perform() throws Exception {
        String[] sourceArgs = applicationArguments.getSourceArgs();
        JobParameters jobParameters; // create job parameters from sourceArgs
        jobLauncher.run(job, jobParameters);
    }
}

Подробнее о типе ApplicationArguments см. В разделе Доступ к аргументам приложения .

Надеюсь, это поможет.

...