
点击蓝字,关注Java高级部落!
嘿,伙计们。在本教程中,我们将看到Spring批处理作业如何使用Quartz调度程序运行。如果您不确定SpringBatch的基本知识,可以访问我的教程这里。

现在,正如我们所知道的,每当我们想要运行任何特定于业务的代码或在任何特定时间/一天运行/生成任何报告时,都会使用Spring批处理作业。有两种实现任务的方法:tasklet 和chunks。在本教程中,我将使用tasklet,它将打印一个logger。这里的基本思想是让这个作业运行所需的所有配置。我们将使用SpringBoot引导应用程序。
对于在我们的应用程序中有Spring批处理和Quartz,我们需要在put.xml中有以下两个依赖项。

现在,让我们看看在代码中运行作业所需的所有配置。
1
BatchConfiguration.java

我们一个接一个地去:
· @Configuration:这指定该类将包含bean,并将在加载时实例化。
· @EnableBatchProcessing:这启用了Spring批处理功能,并为设置批处理作业提供了基本配置。
· @Import({BatchJobsDetailedConfiguration.class}):这将导入所需的其他配置,我们将在后面看到。
· JobRegistry:此接口用于注册作业。
· ResourcelessTransactionManager:当您希望使用任何数据库持久性运行作业时,将使用此类。
· JobRepository:这包含作业的所有元数据,它返回MapJobRepositoryFactoryBean用于非持久的DAO实现。
· JobLauncher:这是用来启动一个作业,需要作为一个依赖项的职务存储库。
· JobRegistryBeanPostProcessor:这用于在jobRegistry,则返回jobRegistry.
我们现在去上进口课。
2
BatchJobesDetailedConfiguration.java

让我们深入研究一下:
· ApplicationContextFactory这个接口在创建新的ApplicationContext 每执行一项任务。最好是创造一个珍珠applicationContext每一份工作。
· JobDetailFactoryBean用于创建Quartz作业详细信息实例。这个类将设置一个作业类,我们将在后面看到。它创建一个映射,该映射将使用类和joblauncher.
· CronTriggerFactoryBean这是用来制造石英的cron 触发实例。这将设置jobDetail 之前创建,然后cron 表达式,当此作业运行时。您可以设置cron expressions as per your need. Cron expressions can be calculated from http://cronmaker.com.
· SchedulerFactoryBean*这用于创建Quartz调度程序实例,并允许注册JobDetails , Calendars,和Triggers,在初始化时自动启动调度程序,并在销毁时关闭它。
我们来看看JobLauncherDetails 班级
3
java

类的executeInternal 方法QuartzJobBean 类的jobdetails,它已经设置在jobParameters,然后执行jobLauncher.run() 运行代码中所示的作业。
让我们访问ReportsConfig 班级,等级。
4
ReportsConfig.java

类的主要目的是拥有与每个作业相关的配置。您将为每个作业设置一个单独的配置,如下所示。如您所见,我们创建了tasklet 在这里,我们稍后会看到。同时,我们定义并返回Job,使用JobBuilderFactory,和StepBuilderFactory。这些工厂将自动设置JobRepository为了你。
我们去ReportTasklet,这是我们的工作。
5
java

类具有一个EXECUTE方法,该方法将在作业通过jobLauncher.run() 从JobLauncherDetails 班级,等级您可以定义需要在这里执行的业务逻辑。
我们需要在应用程序中进行一些配置。
6
application.properties

第一个属性需要禁用数据源-仅用于测试目的,而在生产中不需要。
第二个属性是在服务器启动之前运行作业时。为了避免这种情况,我们需要这种财产。
现在,最后,让我们转到应用程序类。这应该是不言自明的。
7
java

足够的配置!让我们运行这个应用程序并查看输出。我们已经设置了cron 到1分钟。1分钟后,作业将运行。

粗体行表示您的作业已成功运行并完成。这是本教程的全部内容。如果您想了解其他问题,请在下方评论。祝你学习愉快!
看到这里,你想不想踩在过来人的肩膀上,轻松实现专业技能的提升呢?不妨扫码加入java技术交流分享群,体验精彩公开课,还能免费领取更多学习资料。

加入「java技术交流分享群」,开启你的技能提升之旅吧~
长按左边二维码
○
关注Java高级部落



点击原文,加入Java技术交流分享群!