quartz使用

Quartz可以用来做什么?


Quartz是一个任务调度框架。在web开发中,比如你遇到这样的问题

  • 想每天3点,下发邮件到指定的地方
  • 想每年4月1日自己给朋友发一封贺卡

这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要一个专门的框架来干这个事。 Quartz就是来干这样的事,你给它一个触发条件的定义,它负责到了时间点,触发相应的Job起来干活。

一个简单的示例


1.先创建一个类
package cn.ctyun.jweb.modules.at.timer;

@Controller
public class TaskSubmission {

@Autowired
private TaskService taskService;
   
private static Logger log = Logger.getLogger(TaskSubmission.class);


public void taskinfoSubmit() throws SQLException{
//方法中可以做你想做的工作
}

   
  
}
2.创建 Quartz的配置文件,如下
spring-quartz.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
  <!-- 任务方案提交配置 -->
  <bean id="dataSubmitSchedule" class="cn.ctyun.jweb.modules.at.timer.TaskSubmission"/>
  
  <!--同步任务方案信息-->
  <bean id="submitAtinfo" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
 <property name="targetObject">  
         <ref bean="dataSubmitSchedule" />  
      </property>  
      <property name="targetMethod">
          <!-- 提交任务方案信息数据 -->
          <value>taskinfoSubmit</value>
      </property>
  </bean>
  
  <!--提交任务方案信息触发时间-->
  <bean id="submitAtinfoTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
     <property name="jobDetail">  
        <ref bean="submitAtinfo"/>
     </property>  
     <property name="cronExpression">  
        <value>0 43 16 * * ?</value>
     </property>
  </bean>
  
  <!-- quartz的调度工厂 调度工厂只能有一个,多个调度任务在list中添加 -->
  <bean name="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
         <!-- 所有的调度列表 -->
         <ref bean ="submitAtinfoTrigger"/>
      </list>
    </property>
  </bean>
  
</beans>
3.在项目中启动时加载配置文件,可以在web.xml加载配置文件。
<context-param>
    <!--contextConfigLocation 参数定义了要装入的 Spring配置文件 -->
    <param-name>contextConfigLocation</param-name>
    <param-value>
    classpath*:/spring-context*.xml;
    classpath*:/spring-quartz.xml;
    </param-value>//加载多个文件可以用分号隔开
  </context-param>
4.在pom文件中添加相关jar包
<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>
这样就可以在spring-quartz.xml的配置文件配置相关时间,执行方法中需要执行的任务了。如果启动项目后修改时间,需重启后才能重新
加载配置。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值