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

spring boot启动期间调用的Tasklet execute方法

凤修筠
2023-03-14

我使用spring boot编写了一个只有一个步骤的作业,这个步骤调用tasklet。
这是代码:

@Configuration
public class ApiCallerJobConfiguration {

private Step createApiCallerTasklet(StepBuilderFactory steps) {
    ApiCallerLogger.info("Create apiCallerTasklet");
    return steps.get("createApiCallerTasklet")
            .tasklet(new ApiCallerTasklet())
            .build();
}


@Bean(name = "apiCallerJob")
public Job apiCallerJob(JobBuilderFactory jobs, StepBuilderFactory steps) {
    ApiCallerLogger.info("Start apiCallerJob");
    return jobs.get("apiCallerJob")
            .start(createApiCallerTasklet(steps))
            .build();
}
}
@Service
public class JobServiceImpl implements JobService {

@Autowired
private JobLauncher jobLauncher;

@Autowired
@Qualifier("apiCallerJob")
private Job apiCallerJob;

@Override
public JobExecution runJob(String rootContext, String dateFrom, String dateTo) throws Exception{
    JobParametersBuilder jobParametersBuilder = new JobParametersBuilder();
    jobParametersBuilder.addDate(ApiCallerJobParams.EXEC_TIMESTAMP.toString(), new Date());
    jobParametersBuilder.addString(ApiCallerJobParams.CONTEXT_ROOT.toString(), rootContext);
    jobParametersBuilder.addString(ApiCallerJobParams.DATE_FROM.toString(), dateFrom);
    jobParametersBuilder.addString(ApiCallerJobParams.DATE_TO.toString(), dateTo);
    return jobLauncher.run(apiCallerJob, jobParametersBuilder.toJobParameters());
}
} 

共有1个答案

岳阳文
2023-03-14

默认情况下,Spring Boot在启动时执行应用程序上下文中的任何作业。所以我想这就是为什么您会看到tasklet被执行两次:一次是在应用程序启动时,一次是在调用API时。

如果希望在启动时禁用正在运行的作业,则需要设置属性spring.batch.job.enabled=false

 类似资料:
  • 本文向大家介绍SpringBoot开启异步调用方法,包括了SpringBoot开启异步调用方法的使用技巧和注意事项,需要的朋友参考一下 异步调用无需等待,方法相当于子线程,后台执行,主线程执行完成,子线程开始执行。 SpringBoot 开启异步执行仅需两步: 方法上加 @Async main 方法 开启 @EnableAsync controller 执行结果 可以看到 controller 先

  • 本文向大家介绍springBoot项目启动类启动无法访问的解决方法,包括了springBoot项目启动类启动无法访问的解决方法的使用技巧和注意事项,需要的朋友参考一下 网上也查了一些资料,我这里总结。下不来虚的,也不废话。 解决办法: 1、若是maven项目,则找到右边Maven Projects --->Plugins--->run(利用maven启动)则可以加载到webapp资源 2、上面方法

  • 使用spring-boot时,一切工作都很好。尽管如此,在spring-boot中已删除了注释和。我试图将代码重构为新版本,但我做不到。对于以下测试,我的应用程序在测试之前没有启动,http://localhost:8080返回404: 如何重构测试以使其在Spring-Boot1.5中工作?

  • 本文向大家介绍SpringBoot+jsp项目启动出现404的解决方法,包括了SpringBoot+jsp项目启动出现404的解决方法的使用技巧和注意事项,需要的朋友参考一下 通过maven创建springboot项目启动出现404 application.properties配置 项目结构 控制器方法 启动项目访问localhost:8080,出现404 Whitelabel Error Pag

  • 本文向大家介绍超个性修改SpringBoot项目的启动banner的方法,包括了超个性修改SpringBoot项目的启动banner的方法的使用技巧和注意事项,需要的朋友参考一下 如果我们使用过SpringBoot,那么就会对下面的图案不陌生。Springboot 启动的同时会打印下面的图案,并带有版本号。 查看SpringBoot官方文档可以找到关于 banner 的描述 The banner

  • 我的程序编译了所有内容,我没有出错,但我实际上期望tomcat应该永久在端口8080上。输出中也没有Spring。在另一个项目中,我做的一切都很好。谢谢你帮助我。 我的父母: 我的tarter.class: 我的Starter-Pom: 控制台输出: 然后什么都不会发生了。谢谢你的帮助。