Запускать Spring Batch Job программно? - PullRequest
15 голосов
/ 10 мая 2011

У меня есть приложение Spring Batch, которое я запускаю с CommandLineJobRunner. Но теперь я должен встроить это приложение в нашу корпоративную среду. Там у нас есть собственное приложение Launcher, которое я должен использовать. Для этого приложения запуска мне нужен класс запуска с методом main, который будет вызываться при запуске и где мне нужно будет запустить Spring Batch.

Является ли единственный способ вручную назначить JobLauncher и запускать задание с помощью этого средства запуска или есть класс в Spring Batch, который бы поддерживал это (или кто-то знает образец)?

Ответы [ 3 ]

11 голосов
/ 10 мая 2011

Да, вы можете запустить свою работу программно. Если вы видите в источнике из CommandLineJobRunner, основной метод просто создает контекст Spring и использует программу запуска для запуска задания. Так что вы можете сделать это в своем новом приложении.

10 голосов
/ 02 мая 2016

Используя Spring Boot Application, если вы не хотите использовать CommandLineRunner (по какой-то причине или если вам нужна какая-то логика), вы всегда можете сделать что-то вроде:

public static void main(String[] args) {

    SpringApplication app = new SpringApplication(YourApplication.class);
    app.setWebEnvironment(false);
    ConfigurableApplicationContext ctx = app.run(args);

    JobLauncher jobLauncher = ctx.getBean(JobLauncher.class);
    Job job = ctx.getBean("your-job-here", Job.class);
    JobParameters jobParameters = new JobParametersBuilder().toJobParameters();


    JobExecution jobExecution = jobLauncher.run(job, jobParameters);
    BatchStatus batchStatus = jobExecution.getStatus();
}
5 голосов
/ 25 мая 2011

JobLauncher может использоваться для программного запуска задания. JobLauncher может быть автоматически подключен к сервлету / контроллеру, если вы ищете способ запуска заданий из веб-приложения:

http://docs.spring.io/spring-batch/reference/htmlsingle/#runningJobsFromWebContainer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...