spring quartz定时器的简单配置和使用
第一步:导入相关jar包
(注:单单是在后台执行需要的jar包,若是经过tomcat执行,需额外添加一个jar包——jta-1.1.jar)
不同版本需要依赖的jar:
quartz-all-1.6.0.jar版本需要的jar包:
commons-collections-3.2.jar
commons-logging-1.1.1.jar
log4j-1.2.16.jar
spring.jar
quartz-1.8.4.jar版本需要的jar包:
commons-collections-3.2.jar
commons-logging-1.1.1.jar
log4j-1.2.16.jar
quartz-1.8.4.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
spring.jar
第二步: 新建立一个业务bean-->cn.yulon.service.MessageService
package cn.yulon.service;
public class MessageService {
int i;
public void printLog(){
i++;
System.out.println("this is my timer:" +i);
}
第三步:在Spring配置文件l,如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/dtd/spring-beans.dtd">
<beans >
<!-- 第一步: 配置好要定时调用的业务类 -->
<bean id="messageService" class="cn.yulon.service.MessageService" />
<!-- 第二步: 定义好具体要使用类的哪一个业务方法 -->
<bean id="printTimerJob"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 目标bean -->
<property name="targetObject" ref="messageService" />
<!-- 要执行目标bean的哪一个业务方法 -->
<property name="targetMethod" value="printLog" />
<!-- 是否并发 -->
<property name="concurrent" value="false"/>
</bean>
<!-- 第三步: 定义好调用模式: 如每隔2秒钟调用一次或每天的哪个时间调用一次等 -->
<bean id="printTimerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="printTimerJob" />
<property name="cronExpression" value="0/2 * * * * ?" />
</bean>
<!-- 启动定时器 -->
<!--第四步 把定义好的任务放到调度(Scheduler)工厂里面,注意这里的ref bean -->
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
<property name="triggers">
<list>
<ref bean="printTimerTrigger" />
</list>
</property>
</bean>
<!-- end -->
</beans>
相关介绍:
<!--
在xml里配置值得关注的是<property name="cronExpression" value="0/1 * * * * ? "/>表示每隔一秒钟执行一次,例子如下:
0 0 10,14,16 * * 每天
上午10点,下午2点和下午4点
0 0,15,30,45 * 1-10 * 每月前10天每隔15分钟
30 0 0 1 1 2012 在2012年1月1日午夜过30秒时
0 0 8-5 * MON-FRI 每个工作日的工作时间
- 区间
* 通配符 你不想设置那个字段
-->
<!--
cronExpression的介绍:
按顺序 <value> 秒 分 小时 日期 月份 星期 年<value>
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年 (可选)留空,1970-2099 , - * /
“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。
-->
在xml里配置值得关注的是<property name="cronExpression" value="0/1 * * * * ? "/>表示每隔一秒钟执行一次,例子如下:
0 0 10,14,16 * * 每天上午10点,下午2点和下午4点
0 0,15,30,45 * 1-10 * 每月前10天每隔15分钟
30 0 0 1 1 2012 在2012年1月1日午夜过30秒时
0 0 8-5 * MON-FRI 每个工作日的工作时间
- 区间
* 通配符 你不想设置那个字段
第四步:新建测试类SpringTest
st;
import t.ApplicationContext;
import t.support.ClassPathXmlApplicationContext;
public class SpringTest {
public static void main(String[] args) {
ApplicationContext act = new ClassPathXmlApplicationContext("l");
}
}
运行结果如下 :
this is my timer:1
this is my timer:2
this is my timer:3
this is my timer:4
this is my timer:5
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="java.sun/xml/ns/javaee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="java.sun/xml/ns/javaee
java.sun/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
springframework作用<!-- 加载spring的配置文件(一个或者多个) -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>l,applicationContext*.xml</param-value>
</context-param>
<!-- 配置spring(作用就是启动Web容器时,自动装配l文件的配置信息) -->
<listener>
<listener-class>
org.t.ContextLoaderListener
</listener-class>
</listener>
</web-app>
应用场合: 如做一些定时提醒,定时发送邮件、短信,日志定时备份等应用
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论