环境: MyEclipse8.6 + Tomcat6.0.18 + Spring2.5.6
最近研究Spring Quartz定时器任务调度,写了两个Demo,欢迎阅读指正。
Spring Quartz Java工程版
Mission.java(任务源文件)
package com.springquartz.bean;
import org.apache.log4j.Logger;
/**
* @className:Mission.java
* @classDescription:
* @author:Wentasy
* @createTime:2012-7-15 下午07:14:36
* @since:JDK 1.6
*/
public class Mission {
private Logger logger = Logger.getLogger(this.getClass().getName());
public void print(){
logger.info("开始进行任务调度......");
}
}
SpringQuartzTest.java(测试源文件)
package com.springquartz.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @className:SpringQuartzTest.java
* @classDescription:
* @author:Wentasy
* @createTime:2012-7-15 下午07:14:55
* @since:JDK 1.6
*/
public class SpringQuartzTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("测试开始......");
ApplicationContext actx = new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println("测试结束......");
}
}
applicationContext.xml(Spring Quartz配置文件)
<?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="job" class="com.springquartz.bean.Mission"></bean>
<!-- 定义目标bean和bean中的方法 -->
<bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref local="job"/>
</property>
<property name="targetMethod">
<value>print</value>
</property>
</bean>
<!-- 定义触发的时间 -->
<bean id="cron" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobTask"/>
</property>
<property name="cronExpression">
<value>10,15,20,25,30,35,40,45,50,55,00 * * * * ?</value>
<!-- <value>00,05 53,54 * * * ?</value>-->
</property>
</bean>
<!-- 总管理 -->
<bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cron"/>
</list>
</property>
</bean>
</beans>
运行效果截图:
Spring Quartz Web工程版
PrintInfoJob.java(任务源文件)
package com.springquartz.bean;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.springquartz.service.IPrintInfoService;
/**
* @className:Mission.java
* @classDescription:
* @author:Wentasy
* @createTime:2012-7-15 下午07:14:36
* @since:JDK 1.6
*/
public class PrintInfoJob extends QuartzJobBean{
private IPrintInfoService prinfInfoService = null;
public IPrintInfoService getPrinfInfoService() {
return prinfInfoService;
}
public void setPrinfInfoService(IPrintInfoService prinfInfoService) {
this.prinfInfoService = prinfInfoService;
}
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
// TODO Auto-generated method stub
this.prinfInfoService.print();
}
}
IprintInfoService.java(任务接口源文件)
package com.springquartz.service;
/**
* @className:IPrintInfoService.java
* @classDescription:
* @author:Wentasy
* @createTime:2012-7-15 下午08:00:31
* @since:JDK 1.6
*/
public interface IPrintInfoService {
/**
* 方法名:print
* 功能:打印信息
*/
public void print();
}
PrintInfoServiceImpl.java(任务实现源文件)
package com.springquartz.service.impl;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import com.springquartz.service.IPrintInfoService;
/**
* @className:PrintInfoServiceImpl.java
* @classDescription:
* @author:Wentasy
* @createTime:2012-7-15 下午07:59:33
* @since:JDK 1.6
*/
public class PrintInfoServiceImpl implements IPrintInfoService{
public void print() {
// TODO Auto-generated method stub
Calendar now = Calendar.getInstance();
System.out.println("现在是北京时间:" + this.format(now.getTime()));
}
public String format(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
}
applicationContext.xml(Spring Quartz配置文件)
<?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:context="http://www.springframework.org/schema/context"
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.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<bean id="printInfoService" class="com.springquartz.service.impl.PrintInfoServiceImpl"/>
<!-- 配置一个Job -->
<bean id="printInfoJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.springquartz.bean.PrintInfoJob"/>
<property name="jobDataAsMap">
<map>
<entry key="prinfInfoService" value-ref="printInfoService"></entry>
</map>
</property>
</bean>
<!-- 简单的触发器 -->
<bean id="simplePrintInfoTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="printInfoJob"/>
</property>
<property name="startDelay">
<value>6000</value>
</property>
<property name="repeatInterval">
<value>6000</value>
</property>
</bean>
<!--复杂的触发器 -->
<bean id="complexPrintInfoTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="printInfoJob"/>
</property>
<property name="cronExpression">
<!-- <value>0 0/1 * * * ?</value> -->
<value>00,05,10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
</property>
</bean>
<!-- spring触发工厂 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="complexPrintInfoTrigger"/>
</list>
</property>
</bean>
</beans>
web.xml(Web工程配置文件)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
运行效果截图:
项目注意事项:
1.所需Jar包:
commons-collections-3.2.jar commons-logging-1.1.jar jta.jar log4j-1.2.15.jarquartz-all-1.6.5.jar spring.jar
本文源码,欢迎下载:
Spring Quartz Java工程版
Spring Quartz Web工程版
参考资料:
Quartz CronTrigger最完整配置说明
Spring Quartz相关问题
关于Spirng Quartz定时触发器+源码示例!
Spring配置Quartz例子
Spring + Quartz配置实例
Spring中Quartz的配置
分享到:
相关推荐
这是一个JAVA web工程,解压后可直接导入到ECLIPSE中,部署到tomcat中后可以直接运行; 里面有两个定时任务, 一个是使用普通JAVA类,通过Spring使用MethodInvokingJobDetailFactoryBean注入,形式调用; 另一个...
本项目示例基于spring boot 最新版本(2.1.9)实现,Spring Boot、Spring Cloud 学习示例,将持续更新…… 在基于Spring Boot、Spring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目...
在这篇文章中,软件工程师 Michael Lipton 和IT 架构师 Soobaek Jang 对 Quartz API 进行了介绍,从对框架的一般概述开始,并以一系列展示 Quart 基本特性的代码示例作为结束。在阅读完本文并看过代码示例后,您应当...
6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.4. 声明通知 6.2.5. 引入(Introductions)...
该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户...
6.1.2. Spring AOP的功能和目标 6.1.3. Spring的AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.3.1. 切入点指定者的支持 6.2.3.2. 合并切入点...
6.1.2. Spring AOP的功能和目标 6.1.3. AOP代理 6.2. @AspectJ支持 6.2.1. 启用@AspectJ支持 6.2.2. 声明一个切面 6.2.3. 声明一个切入点(pointcut) 6.2.4. 声明通知 6.2.5. 引入(Introduction) 6.2.6. ...
2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...
17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...
Spring启动项目该仓库中主要是Spring Boot的入门学习教程以及一些常用的Spring Boot实战项目教程,包括Spring Boot使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的web开发以及...
基于Spring Cloud的微服务实战 - 天气...Spring Boot Web Starter 2.0.0.M4 Apache HttpClient 4.5.3 Spring Boot Data Redis Starter 2.0.0.M4 Redis 3.2.100 Spring Boot Quartz Starter 2.0.0.M4 Quartz Scheduler
2.1 groovy和java的异同 2.1.1 相同点 2.1.2 不同点 2.2 基础知识 2.1.1 类声明 . 2.2.2 语言级断言(assertion) 2.2.3 groovy字符串 2.2.4 闭包(closures) 2.2.5 列表...
代码示例 ... 石英演示https://www.opencodez.com/java/quartz-scheduler-with-spring-boot.htm restful-demo https://www.opencodez.com/java/building-restful-web-services-using-java.htm 弹簧启动数
| └── zheng-pay-web -- 演示示例[端口:3332] ├── zheng-ucenter -- 用户系统(包括第三方登录) | ├── zheng-ucenter-common -- ucenter系统公共模块 | ├── zheng-ucenter-dao -- 代码生成模块,无需开发...
并在len-web/pom.xml、父 pom.xml 删除依赖以及模块,删除application.java 中对activiti的扫描即可完全删除工作流模块。 技术: jdk:1.8 核心框架:spring boot 2.1.9.RELEASE 安全框架:Apache Shiro 工作流引擎...
1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................