当前位置: 首页 > 知识库问答 >
问题:

Spring批处理作业在项目启动时自动运行

景俊拔
2023-03-14

我开发了spring批处理作业,它从JDBC获取数据。我面临的问题是,它在项目启动时执行,而不管启用了什么属性。属性的值为FALSE。我试图在属性上创建一个条件bean,但它也不起作用,作业正在项目启动时执行。

遵循我的代码段。

@Bean
@ConditionalOnProperty(value = "wallet-manager.djeezyConfig.enableJob" , havingValue = "false")
public Job createJob() {
    return jobBuilderFactory.get("DJeezy wallet cleaner job")
            .incrementer(new RunIdIncrementer())
            .flow(Step1())
            .end()
            .build();
}

@Bean
@ConditionalOnProperty(value = "wallet-manager.djeezyConfig.enableJob" , havingValue = "false")
public Step Step1() {
    return stepBuilderFactory.get("DJeezy wallet cleaner job - step1")
            .<ResellerWallet,ResellerWallet> chunk(wConfig.getDjeezyConfig().getChunkSize())
            .reader(resellerWalletItemReader)
            //.processor(resellerWalletProcessor)
            .writer(resellerWalletItemWriter)
            .faultTolerant()
            .skip(EmptyResultDataAccessException.class)
            .build();
}

我还试图对计划的注释进行注释,但它仍在执行作业和步骤。

//@调度(固定延迟=15000)公共无效调度ByFixed费率()抛出异常{

if(config.getDjeezyConfig().isEnableJob()) {

    System.out.println("Batch job starting");
    JobParameters jobParameters = new JobParametersBuilder()
            .addString("time", format.format(Calendar.getInstance().getTime())).toJobParameters();
    jobLauncher.run(job, jobParameters);
    System.out.println("Batch job executed successfully\n");
}

}

有人能告诉我这里缺少什么吗?以及如何防止在启动时执行我的作业和步骤。

共有1个答案

公良凯
2023-03-14
spring.batch.job.enabled=false 

希望您在属性文件中使用此属性这应该可以

 类似资料:
  • 我正在使用spring批处理读取CSV文件并使用controller触发器将其写入DB。在启动应用程序时,在我从浏览器url中点击之前,我会在启动时看到来自阅读器的打印语句。虽然它不为我的处理器或写入器打印它,它们是在单独的类中,我已经自动连线。是因为读者是豆子吗?

  • 我有一个spring批处理作业,从CSV文件读取并写入数据库。我想让它重新启动。例如,如果在读取文件或写入db时出现异常,导致作业失败,则应从失败的同一点/块重新开始,而不是从头开始读取整个文件。 我正在从一个endpoint触发作业启动器,并在我的控制器中配置了它。 目前,我正在通过控制器将参数(这是一个唯一的标识符/数字)传递给作业参数,以运行新的作业实例。如果作业失败,我将使用与GET请求中

  • 我们需要执行从一个数据库到其他数据库的数据移动,并为此探索spring batch。我们应用程序的用户选择源数据源和目标数据源,以及需要为其移动数据的表列表。 在以下方面需要帮助: 构建作业所需的信息在运行时来自我们的web应用程序-包括数据源详细信息和表名列表。我们希望通过将这些详细信息发送到job builder模块来创建一个新作业,并使用JobLauncher启动它。我们如何编写这个job

  • 我需要从远程SFTP服务器下载一个文件,并使用spring batch处理它们。我已经实现了使用Spring集成下载文件的代码。但我无法从Spring集成组件启动Spring批处理作业。我有以下代码: 但这不起作用(上一个方法中的错误),因为找不到文件类型的bean。我不能把这两部分连在一起。如何连接集成和批处理?

  • 是否可以配置Spring批处理管理员来启动主作业和从作业。我们有一个进程作为主节点和3-4个从节点。 Spring batch admin在单独的JVM进程中运行,但所有Spring批处理作业都使用相同的批处理数据库模式。