一. 前言

最近有毕业学员问我,说在面试的时候,被问到了定时组件的使用,这位学员一脸懵逼,他竟然不知道实现定时组件的技术有哪些。其实实现定时功能的技术繁多,比如cron4j、SpringTask、Quartz等。

当然我们大可不必学习所有的定时组件,只需要根据公司的实际情况,学习某一个定时组件的基本功能,根据业务合理运用,实现相关功能即可。

二. quartz的使用

今天我就以quartz定时组件为例,来给大家简单讲解定时组件的基本使用。本次咱们先抛砖引玉,对quartz的使用有个基本的了解,如果你想对quartz有深入的了解,可以偷偷在评论区私信我哟~。

好了,我们废话不多说,直接来盘它!

三. 搭建工程

今天我们基于原生的SSM环境来实现quartz定时组件的开发,虽然XML的配置方式比较繁琐,但配置思路却比较清晰,让人一看就一目了然,对新手而言易于理解。

1.搭建Spring工程,引入依赖

我们先创建一个maven工程,将所需要用到的依赖全部拷贝至pom.xml中。

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.2.RELEASE</version></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz-jobs</artifactId><version>2.2.1</version></dependency></dependencies>
Spring-context 是Spring的核心依赖,我们一般要在Spring环境中使用quartz,所以我们需要先导入spring的核心依赖包。quartz quartz-job 这两个依赖是我们使用的quartz组件核心依赖。

2.创建spring配置文件

接着创建一个applicationContext.xml文件,并进行相关的配置。

<bean id="quartzDemo" class="com.qf.QuartzDemo"></bean><bean id="jobDetailFactoryBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="quartzDemo"></property><property name="targetMethod" value="invoke"></property></bean><bean id="triggerFactoryBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="jobDetailFactoryBean"></property><property name="cronExpression" value="0/10 * * * * ?"></property></bean><bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="triggerFactoryBean"></ref></list></property></bean>

2.1 MethodInvokingJobDetailFactoryBean

然后我们需要定义一个类,然后在这个类里面定义一个需要被定时执行的方法。在quartz中,这个方法的执行是交给一个job执行的工厂bean的。所以我们需要配置这个工厂bean。

工厂bean内部配置targetObject属性。这个属性的值引用了我们需要被任务调度的那个bean。targetMethod: 目标方法。就是我们具体被任务调度的方法。

2.2 CronTriggerFactoryBean

根据中文意思,这是一个任务调度工厂的触发器。我们工厂里面定义的目标方法如何执行,就是需要被这个触发器触发并执行的。这个bean的内部有两个属性:

jobDetail 真正需要被触发器触发的任务调度bean。cronExpression 触发器执行需要遵循的时间规则。

关于cron表达式,我们可以参照一个在线网站去编写,http://cr http://on.qqe2.com/

2.3 SchedulerFactoryBean

SchedulerFactoryBean是任务调度工厂bean,我们的触发器如果要执行的话,需要在SchedulerFactoryBean里面进行相关配置。通过配置文件,我们发现在内部配置了任务调度触发器的集合。这里为什么是集合呢?因为我们的任务调度触发器可能需要多个,也就是可能会有多个任务需要调度,这就是我们使用List指定触发器的原因。

3.创建任务调度类

然后再创建一个类,编写一个执行方法。

public class QuartzDemo {public void invoke(){System.out.println("invoke方法执行了,执行的时间是:" + new Date());}}

4.测试

接着编写测试类,初始一个IoC容器。

public class TestQuartz {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("springApplicationContext.xml");}}

5.代码结构

最后完整的代码结构如下图所示:

6.启动运行

当我们把项目启动后,执行结果如下图所示:

好啦,到这里我们就简单演示了quartz的基本使用,希望对新手小伙伴能有所帮助,如果你还有其他问题,可以在评论区给我留言哦。最后分享一套JavaWeb视频,从零基础入门到项目实战,让你学习Java不迷茫!!!

如果喜欢的话,欢迎关注+点赞+收藏哦!

分类: 教程分享 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录