如何在启动时启动作业,同时使用Spring Batch 5,因为我使用@EnableBatchProcessiong由于自定义Jackson序列化器?

ifmq2ha2  于 2024-01-06  发布在  Spring
关注(0)|答案(1)|浏览(179)

我从SB 2.x迁移到SB 3.x,我知道@EnableBatchProcessing或扩展DefaultBatchConfiguration将自动启动作业,但由于我需要使用自定义JacksonSearizer,因此我使用@EnableBatchProcessing(executionContextSerializerRef=“myJacksonSerializer”)
可以帮助建议我如何控制和开始工作?

z18hc3ub

z18hc3ub1#

您可以在启动Sping Boot 应用程序的main方法中添加启动作业的代码,类似于:

  1. import org.springframework.batch.core.Job;
  2. import org.springframework.batch.core.JobParameters;
  3. import org.springframework.batch.core.launch.JobLauncher;
  4. import org.springframework.boot.SpringApplication;
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;
  6. import org.springframework.context.ApplicationContext;
  7. @SpringBootApplication
  8. public class DemoApplication {
  9. public static void main(String[] args) throws Exception {
  10. ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
  11. JobLauncher jobLauncher = context.getBean(JobLauncher.class);
  12. Job job = context.getBean(Job.class);
  13. jobLauncher.run(job, new JobParameters());
  14. }
  15. }

字符串
另一种选择是将代码放在ApplicationRunner bean中。下面是一个示例:

  1. import org.springframework.batch.core.Job;
  2. import org.springframework.batch.core.JobParameters;
  3. import org.springframework.batch.core.launch.JobLauncher;
  4. import org.springframework.boot.ApplicationRunner;
  5. import org.springframework.boot.SpringApplication;
  6. import org.springframework.boot.autoconfigure.SpringBootApplication;
  7. import org.springframework.context.annotation.Bean;
  8. @SpringBootApplication
  9. public class DemoApplication {
  10. public static void main(String[] args) {
  11. SpringApplication.run(DemoApplication.class, args);
  12. }
  13. @Bean
  14. public ApplicationRunner jobRunner(JobLauncher jobLauncher, Job job) {
  15. return args -> jobLauncher.run(job, new JobParameters());
  16. }
  17. }

展开查看全部

相关问题