ssm+quartz创建定时任务

本文介绍如何在Spring项目中配置Quartz实现定时任务。通过导入必要的jar包,并在Spring配置文件中定义线程池、任务类及触发器,最终实现每五秒执行一次的定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.在项目中导入jar包(之前看资料,别人说Spring框架自带quartz,直接可以使用,但自己实践时发现有几个方法不存在,所以就下载jar包导入了)

  1. aopalliance.jar  
  2. aspectjrt.jar  
  3. aspectjweaver.jar  
  4. commons-beanutils-1.9.2.jar  
  5. commons-codec-1.9.jar  
  6. commons-collections-3.2.1.jar  
  7. commons-dbcp-1.4.jar  
  8. commons-fileupload-1.3.1.jar  
  9. commons-io-2.4.jar  
  10. commons-lang-2.6.jar  
  11. commons-logging-1.2.jar  
  12. commons-net-3.1.jar  
  13. commons-pool-1.6.jar  
  14. commons-pool2-2.2.jar  
  15. druid-1.0.9.jar  
  16. fastjson-1.1.39.jar  
  17. freemarker-2.3.19.jar  
  18. hamcrest-core-1.3.jar  
  19. jackson-all-1.9.5.jar  
  20. jboss-logging-3.1.0.CR2.jar  
  21. jettison-1.0.1.jar  
  22. jstl-1.1.2.jar  
  23. junit-4.11.jar  
  24. log4j-1.2.17.jar  
  25. log4j-over-slf4j-1.7.7.jar  
  26. mybatis-3.2.6.jar  
  27. mybatis-spring-1.2.2.jar  
  28. mysql-connector-java-5.1.30-bin.jar  
  29. servlet-api.jar  
  30. slf4j-api-1.7.7.jar  
  31. slf4j-ext-1.7.7.jar  
  32. spring-aop-4.0.2.RELEASE.jar  
  33. spring-aspects-4.0.2.RELEASE.jar  
  34. spring-beans-4.0.2.RELEASE.jar  
  35. spring-context-4.0.2.RELEASE.jar  
  36. spring-context-support-4.0.2.RELEASE.jar  
  37. spring-core-4.0.2.RELEASE.jar  
  38. spring-expression-4.0.2.RELEASE.jar  
  39. spring-jdbc-4.0.2.RELEASE.jar  
  40. spring-oxm-4.0.2.RELEASE.jar  
  41. spring-test-4.0.2.RELEASE.jar  
  42. spring-tx-4.0.2.RELEASE.jar  
  43. spring-web-4.0.4.RELEASE.jar  
  44. spring-webmvc-4.0.2.RELEASE.jar  
  45. standard-1.1.2.jar

Spring的jar包自然是必须的,然后在quartz官网下载jar包(Quartz 2.1.7),解压后导入下面两个包。

 

2.在Spring的配置文件头部定义以下信息

<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd ">

3.写好自己需要执行的业务逻辑代码

复制代码
 1 package com.msq;
 2 
 3 public class  TestJobTask{  
 4     /** 
 5      *业务逻辑处理 
 6      */  
 7       public void   service(){  
 8           /**业务逻辑*/  
 9               System.out.println(System.currentTimeMillis());
10       }  
11 }
复制代码

4.在Spring里面继续作如下配置:

复制代码
 1     <!-- 定时任务start -->
 2 
 3     <!-- 线程执行器配置,用于任务注册 -->
 4     <bean id="executor"
 5         class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
 6         <property name="corePoolSize" value="10" />
 7         <property name="maxPoolSize" value="100" />
 8         <property name="queueCapacity" value="500" />
 9     </bean>
10 
11     <!-- 业务对象 --> //1.配置任务类
12     <bean id="testJobTask" class="com.msq.TestJobTask" />
13 
14     <!-- 调度业务 -->  //2.配置任务类描述
15     <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
16         <property name="targetObject" ref="testJobTask" />  //任务目标类 
17         <property name="targetMethod" value="service" />    //任务目标方法
18     </bean>
19 
20     <!-- 增加调用的触发器,触发时间 并注入到调度工厂-->  //3.配置触发器,将触发器注入到调度工厂
21     <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
22         <property name="jobDetail" ref="jobDetail" />   //任务类
23         <property name="cronExpression" value="0/5 * * * * ? *" />  //cron表达式I
24     </bean>
25 
26     <!-- 设置调度工厂 注入触发器-->
27     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
28         <property name="triggers">
29             <list>
30                 <ref bean="cronTrigger" />
31             </list>
32         </property>
33         <property name="taskExecutor" ref="executor" />
34     </bean>
35 
36     <!-- 定时任务end -->
复制代码
到此,就配置完了,部署项目到Tomcat,就可以运行了,可以看到在控制台每隔五秒就会输出当前时间
SSM项目中使用Quartz进行定时任务可以按照以下步骤进行操作: 1. 配置依赖:在项目的`pom.xml`文件中添加Quartz的依赖。例如: ```xml<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version> </dependency> ``` 2. 创建定时任务类:在您的SSM项目中创建一个定时任务类,可以命名为`JobScheduleTask`。该类需要实现Quartz的`Job`接口,并实现其中的`execute`方法。在`execute`方法中编写定时任务的逻辑代码。 ```javapublic class JobScheduleTask implements Job { @Override public void execute(JobExecutionContext context) throws JobExecutionException { // 定时任务的逻辑代码 // ... } } ``` 3. 配置定时任务触发器:创建一个触发器类,可以命名为`JobScheduleTrigger`。在该类中,使用Quartz的`TriggerBuilder`来配置定时任务触发器的属性,例如执行时间、周期等。 ```javapublic class JobScheduleTrigger { public static Trigger createTrigger() { return TriggerBuilder.newTrigger() .withIdentity("jobScheduleTrigger") .withSchedule(CronScheduleBuilder.cronSchedule("000/1 * * ?")) // 每小时执行一次 .build(); } } ``` 4. 配置定时任务调度器:创建一个调度器类,可以命名为`JobScheduleScheduler`。在该类中,使用Quartz的`SchedulerFactory`来创建调度器实例,并配置相关属性,如数据源、任务存储等。然后使用调度器的`scheduleJob`方法将定时任务和触发器关联起来,并启动调度器。 ```javapublic class JobScheduleScheduler { public static void startScheduler() throws SchedulerException { SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); JobDetail jobDetail = JobBuilder.newJob(JobScheduleTask.class) .withIdentity("jobScheduleTask") .build(); Trigger trigger = JobScheduleTrigger.createTrigger(); scheduler.scheduleJob(jobDetail, trigger); scheduler.start(); } } ``` 5. 在Spring配置文件中配置调度器:在您的Spring配置文件(如`applicationContext.xml`)中,将定时任务调度器配置为一个Bean,并在其中调用`JobScheduleScheduler.startScheduler()`方法。 ```xml<bean id="jobScheduleScheduler" class="com.example.JobScheduleScheduler" init-method="startScheduler" /> ``` 6. 启动项目:启动您的SSM项目,定时任务调度器会根据配置的触发器时间和周期执行定时任务的逻辑。 请注意,以上步骤仅提供了一个基本示例,您可以根据实际需求进行修改和扩展。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值