quartz实现定时器

quartz实现定时器

 

Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB作业预构建,JavaMail及其它,支持cron-like表达式等等。

一。需要applicationContext-task.xml;applicationContext-beans-task.xml两个配置文件,名字可以自己写;

     这两个文件需要在tomcat启动时,自动加载。

     在项目下的web.xml里面配置

         <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
        classpath*:applicationContext-beans-*.xml,
        classpath*:applicationContext-task.xml
      </param-value>
    </context-param>

     用于加载两个.xml文件。

二。applicationContext-task.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
   <bean id="ballotInvoking" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
       <property name="targetObject"><ref bean="ballot"/></property>
       <property name="targetMethod"><value>bup</value></property>
   </bean>
   <bean id="ballotTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
     <property name="jobDetail">
        <ref bean="ballotInvoking"/>
     </property>
     <property name="cronExpression">

<!--第天晚上11点55分调用这个方法-->
   <value>0 55 23 * * ?</value>
     </property>
   </bean>
 
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <property name="triggers">
         <list>
           <ref local="ballotTrigger"/>
         </list>
       </property>
    </bean> 
</beans>

三。applicationContext-beans-task.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"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

 <!-- 方法所在的地方 -->
 <bean id="ballot" scope="prototype" class="com.chineseall.sample.ballot.BallotUp">
     <property name="service">
        <ref bean="ballotService"/>
     </property>
 </bean>
</beans>

四。BallotUp.java

public class BallotUp {

 private IBallotService service;

 public void bup()
 {
  try
  {
   java.util.Date ud=new java.util.Date();
       service.updateByDate(ud);
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
 }

 /**
  * @return the service
  */
 public IBallotService getService() {
  return service;
 }

 /**
  * @param service the service to set
  */
 public void setService(IBallotService service) {
  this.service = service;
 }
}

这样就可以了,别忘记了,要加上quartz需要的包。

我这里是有这个版本的

quartz-all-1.6.0.jar

很容易哈

我们常会用到的定时时间

表达式     含义
"0 0 12 * * ?"                     每天中午十二点触发
"0 15 10 ? * *"                          每天早上 10 : 15 触发
"0 15 10 * * ?"                          每天早上 10 : 15 触发
"0 15 10 * * ? *"                      每天早上 10 : 15 触发
"0 15 10 * * ? 2005"               2005年的每天早上 10 : 15 触发
"0 * 14 * * ?"                            每天从下午 2 点开始到 2 点 59 分每分钟一次触发
"0 0/5 14 * * ?"                       每天从下午 2 点开始到 2 : 55 分结束每 5 分钟一次触发
"0 0/5 14,18 * * ?"                  每天的下午 2 点至 2 : 55 和 6 点至 6 点 55 分两个时间段内每 5 分钟一次触发
"0 0-5 14 * * ?"                       每天 14:00 至 14:05 每分钟一次触发
"0 10,44 14 ? 3 WED"            三月的每周三的 14 : 10 和 14 : 44 触发
"0 15 10 ? * MON-FRI"          每个周一、周二、周三、周四、周五的10 : 15 触发
"0 15 10 15 * ?"                       每月 15 号的 10 : 15 触发
"0 15 10 L * ?"                         每月的最后一天的 10 : 15 触发
"0 15 10 ? * 6L"                      每月最后一个周五的 10 : 15 触发
"0 15 10 ? * 6L"                      每月最后一个周五的 10 : 15 触发
"0 15 10 ? * 6L 2002-2005"      2002年至 2005 年的每月最后一个周五的 10 : 15 触发
"0 15 10 ? * 6#3"                   每月的第三个周五的 10 : 15 触发

你可能感兴趣的:(spring,AOP,bean,xml,quartz)