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