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

标签 spring spring-batch spring-boot spring-java-config

我在同一个项目中有两个独立的 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/

相关文章:

java - Spring批处理和SystemCommandTasklet : cannot pass parameter

java - 部署在 Heroku 上的 Spring Boot 应用程序仍然崩溃

mysql - 一般意义上的 h2 与 hibernate 和 MySql 之间的区别

spring - Flyway 以编程方式设置占位符

java - Spring @Validated 和 @InitBinder

java - 无法在 JavaMail 中设置文本和添加附件

java - Spring:Spring Batch bean 的 DI 不起作用

java - Spring Batch - 重新触发服务激活器

xml - Spring Servlet-Context.xml 报错Cannot locate BeanDefinitionParser for element [import]

Java - Spring MVC - 从表单提交自动填充对象?