Spring批处理作业的动态名称

m2xkgtsf  于 2022-12-10  发布在  Spring
关注(0)|答案(1)|浏览(135)

我定义了一个非常简单的spring批处理作业,如下所示。我想使用接收到的参数更改它的注册名称(该参数作为 jobName 添加到作业的spring批处理参数列表中)

@Bean
    @JobScope  //this doesn't work throws exception 'No context holder available for job scope'
    Job genericJob (JobNotifierListener listener,
                           Step genericStep1, Step genericStep2,
                    @Value("#{jobParameters['jobName']}") String jobName
    ) {
        return jobBuilderFactory.get(jobName + "GenericJob")
                .incrementer(new RunIdIncrementer())
                .listener(listener)
                .start(genericStep1)
                .next(genericStep2)
                .build();
    }

我如何配置作业,以便使用输入批处理参数 jobName 动态更改作业的名称?(因为添加@JobScope来访问Spring批处理上下文不起作用,抛出错误)

wztqucjr

wztqucjr1#

工作名称不应该是工作参数。工作参数是针对“商业”执行时期参数而设计,而不是技术组态参数。应用程序属性或系统属性更适合您的情况:

@Bean
//@JobScope // no need for this
Job genericJob (JobNotifierListener listener,
                           Step genericStep1, Step genericStep2,
                    @Value("#{systemProperties['jobName']}") String jobName
    ) {
        return jobBuilderFactory.get(jobName + "GenericJob")
                .incrementer(new RunIdIncrementer())
                .listener(listener)
                .start(genericStep1)
                .next(genericStep2)
                .build();
    }

相关问题