ITPub博客

首页 > 数据库 > 数据库开发技术 > 扎实,很重要丨面试基本功之quartz定时组件的简单使用!

扎实,很重要丨面试基本功之quartz定时组件的简单使用!

原创 数据库开发技术 作者:Finally_m 时间:2022-08-19 08:03:00 0 删除 编辑
点击上方蓝字关注我们

一. 前言

最近有毕业学员问文哥,说在面试的时候,被问到了定时组件的使用,这位学员一脸懵逼,他竟然不知道实现定时组件的技术有哪些。其实实现定时功能的技术繁多,比如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 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的基本使用,希望对新手小伙伴能有所帮助,如果你还有其他问题,可以在评论区给我留言哦。

本月福利,关注公众号回复【福利】抢书咯!

今日份干货,学会的同学回复“666”!

精选第一名,可以领取办公鼠标垫一个!

点击【阅读原文】,零基础免费学Java!

原文作者:Java架构栈;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-04-13

  • 博文量
    573
  • 访问量
    243919