gpt4 book ai didi

spring - 如何根据应用程序参数选择要运行的spring批处理作业-spring boot java config

转载 作者:行者123 更新时间:2023-12-04 02:41:58 33 4
gpt4 key购买 nike

我在同一个项目中有两个独立的 spring 批处理作业,因为我想使用相同的基础设施相关 bean。一切都是用 Java 配置的。我想知道是否有适当的方法来独立启 Action 业,例如基于 main 方法中的第一个 java app 参数。如果我运行 SpringApplication.run只有第二个工作被魔法执行。
主要方法如下所示:

@ComponentScan
@EnableAutoConfiguration
public class Application {

public static void main(String[] args) {
SpringApplication app = new SpringApplication(Application.class);
app.setWebEnvironment(false);
ApplicationContext ctx= app.run(args);
}

}

并且这两个作业的配置如 Spring.io 上的 Spring Batch 入门教程中所述。这是第一个作业的配置文件,第二个以相同的方式配置。
@Configuration
@EnableBatchProcessing
@Import({StandaloneInfrastructureConfiguration.class, ServicesConfiguration.class})
public class AddPodcastJobConfiguration {

@Autowired
private JobBuilderFactory jobs;

@Autowired
private StepBuilderFactory stepBuilderFactory;
//reader, writer, processor...

}

为了实现模块化,我创建了一个 AppConfig 类,我在其中为两个作业定义了工厂:
@Configuration
@EnableBatchProcessing(modular=true)
public class AppConfig {

@Bean
public ApplicationContextFactory addNewPodcastJobs(){
return new GenericApplicationContextFactory(AddPodcastJobConfiguration.class);
}

@Bean
public ApplicationContextFactory newEpisodesNotificationJobs(){
return new GenericApplicationContextFactory(NotifySubscribersJobConfiguration.class);
}

}

附言我是 Java 配置 Spring Boot 和 Spring Batch 中的 Spring 配置新手...

最佳答案

只需设置“spring.batch.job.names=myJob”属性。您可以在启动应用程序时将其设置为 SystemProperty (-Dspring.batch.job.names=myjob)。如果您已定义此属性,则 spring-batch-starter 将仅启动由此属性定义的作业。

关于spring - 如何根据应用程序参数选择要运行的spring批处理作业-spring boot java config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25122103/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com