Quartz框架的使用

一.开头小叙:

        之前介绍过Spring自带的定时task,虽然好用,配置理解起来都很简单。但是一旦定时挂了,如果不及时处理,数据库会产生很多脏数据。Quartz框架就可以避免这个问题,此框架在挂掉之后会重新启动。接下来说的是在Spring环境下的简单使用,如果想了解更多参见官网:http://www.quartz-scheduler.org

二.使用步骤:

1.第一步:引入相关jar包,下面是maven依赖

<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>

 2.创建自己的定时任务类:

public class TestJob {
    public void run() {
        System.out.println("测试定时:" +
                new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }
}

 

  3.去Spring配置文件去注入一系列配置:

在注入之前希望大家能搞清楚配置的相互注入关系:主要的就是job---->jobDetail---->trigger---->scheduler,

具体各自什么概念大家自己百度,这里就不多细说。搞清楚注入关系,再来看下面的注入配置信息会容易理解。

<bean id="TestJob" class="com.cishoo.lovely.web.back.job.TestJob"></bean>

<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <!-- 注入目标对象 -->
    <property name="targetObject" ref="TestJob"/>
    <!-- 注入目标方法 -->
    <property name="targetMethod" value="run"/>
</bean>

<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <!-- 注入任务详情对象 -->
    <property name="jobDetail" ref="jobDetail"/>
    <!-- 注入cron表达式,通过这个表达式指定触发的时间点 -->
    <property name="cronExpression">
        <value>0 */1 * * * ? </value>
    </property>
</bean>

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <!-- 注入触发器 -->
    <property name="triggers">
	<list>
		<ref bean="myTrigger"/>
	</list>
    </property>
</bean>

可以定义多个job,也可以定义多个触发器trigger,和一个类似大家感兴趣可以自己多配置几个玩玩。

三.测试结果:

  

我的cron表达式是每分钟执行一次,打印当前时间。

四:小结

       自己小菜鸟,此篇也只是自己demo测试,分享给大家。其实Quartz还有一些更复杂的使用,例如多个job一起,如何去管理,出现异常怎么处理。大家想了解可以自己去试试,网上资料很多的,谢谢大家!

 

Quartz是一个开源的任务调度框架,可以用来实现定时任务、延时任务、周期性任务等。下面是一个使用Quartz框架的简单示例: 1. 引入依赖 在项目的pom.xml中添加以下依赖: ``` <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> ``` 2. 编写任务类 Quartz框架需要我们编写一个实现了Job接口的任务类,例如: ``` public class MyJob implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello Quartz!"); } } ``` 3. 配置任务调度器 我们需要创建一个Scheduler对象来配置任务调度器,并将任务类与触发器绑定在一起,例如: ``` public class QuartzTest { public static void main(String[] args) throws SchedulerException { // 创建任务调度器 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); // 创建任务类和触发器 JobDetail jobDetail = JobBuilder.newJob(MyJob.class) .withIdentity("job1", "group1") .build(); Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("trigger1", "group1") .startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10) .repeatForever()) .build(); // 将任务类和触发器绑定在一起,并启动调度器 scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); } } ``` 以上代码中,我们创建了一个名为"job1",所在分组为"group1"的任务,以及一个名为"trigger1",所在分组为"group1"的触发器。触发器的执行时间间隔为10秒,重复执行无限次。 4. 运行程序 运行程序后,我们可以看到每隔10秒钟就会输出一次"Hello Quartz!"。这就说明我们已经成功地使用Quartz框架实现了一个简单的定时任务。 以上是一个简单的Quartz框架使用实例,更复杂的任务调度可以通过配置不同类型的触发器和JobDetail来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值