Отдельный файл конфигурации для одного и того же задания, выполняемого по отдельным сценариям - PullRequest
0 голосов
/ 13 февраля 2019

Я использую Spring Batch с загрузкой Spring.

У меня есть два задания, которые я выполняю, используя приведенные ниже:

private static final Logger LOGGER = LoggerFactory.getLogger(TimeWorkedJobLauncher.class);

private final Job job;
//private final Job jobDS;

private final JobLauncher jobLauncher;


@Autowired
private ResourceLoader resourceLoader;

@Autowired
TimeWorkedJobLauncher(@Qualifier("timeworkedJob") Job job, JobLauncher jobLauncher) {
    System.out.println("Inside TimeWorkedJobLauncher");
    this.job = job;
    this.jobLauncher = jobLauncher;
    //this.jobDS = jobDS;
}


@Async
@Scheduled(cron = "${reports.timeWorked.job.cron}")
public void execute() throws JobParametersInvalidException, JobExecutionAlreadyRunningException,
        JobRestartException, JobInstanceAlreadyCompleteException {
    LOGGER.info("Starting TimeWorked job");
    JobParametersBuilder builder = new JobParametersBuilder();
    builder.addDate("date", new Date());
    builder.addLong("time",System.currentTimeMillis());
    builder.addString(LoaderConstants.JOB_PARAMETER, resourceLoader.getTimeWorkedFileLoc());

    jobLauncher.run(job, builder.toJobParameters());


    LOGGER.info("Stopping TimeWorked job");
}


    @Async
    @Scheduled(cron = "${reports.timeWorked.job.cronds}")
    public void executeDSJob() throws JobParametersInvalidException, JobExecutionAlreadyRunningException,
            JobRestartException, JobInstanceAlreadyCompleteException {

        JobParametersBuilder builder = new JobParametersBuilder();
        builder.addDate("date", new Date());
        builder.addLong("time",System.currentTimeMillis());
        builder.addString(LoaderConstants.JOB_PARAMETER, resourceLoader.getTimeWorkedFileLocForDS());
        jobLauncher.run(job, builder.toJobParameters());


        LOGGER.info("Stopping TimeWorked job for DS");
    }

Единственное отличие состоит в том, что при запуске executeDSJob ()Мне нужно, чтобы задание выполнялось различными методами beforeStep () и afterStep (), которые выполняются, когда я запускаю задание с использованием execute ().

У меня настроены два класса конфигурации, единственное отличие состоит в том, что один класс возвращает

@Bean
    public StepExecutionListener timeworkedCountProcessor() {
        return new TimeWorkedProcessorDS();
    }

и другие возвращаемые значения

@Bean
    public StepExecutionListener timeworkedCountProcessor() {
        return new TimeWorkedProcessor();
    }

Но когда я запускаю метод execute (), используется TimeWorkedProcessorDS (), а afterStep () и beforeStep () этого классаиспользуется.

Как я могу это сделать?

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