quartz快速入门(一)
来源:互联网 发布:海绵软件 编辑:程序博客网 时间:2024/05/22 15:50
quartz学习笔记
1,quick start
第一步:创建maven项目
管理依赖
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.simple.projects</groupId>
<artifactId>quartztest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
</dependencies>
<build/>
</project>
第二步:利用官网的quickstart先跑起来
http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start.html
package cn.simple.quartz.test;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzQuickStart {
public static void main(String[] args) {
try {
// Grab the Scheduler instance from the Factory
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
// and start it off
scheduler.start();
scheduler.shutdown();
} catch (SchedulerException se) {
se.printStackTrace();
}
}
}
运行结果:
2,简易例子
详情参考:http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/tutorial-lesson-01.html
目标:每五秒在控制台上打印语句
第一步:编写job任务,实现了job接口的任务类
HelloJob.java
package cn.simple.quartz.sample;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job{
@Override
public void execute(JobExecutionContext arg0)throws JobExecutionException {
System.out.println("我来证明任务在执行...");
}
}
第二步:编写任务执行类
QuartzSampleTest.
package cn.simple.quartz.sample;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class QuartzSampleTest {
public static void main(String[] args) {
//拿到调度工厂
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
//拿到scheduler
try {
Scheduler scheduler = schedulerFactory.getScheduler();
//开启调度
scheduler.start();
//包装job
JobDetail job = JobBuilder.newJob(HelloJob.class)
//用来分组命名
.withIdentity("job1", "group1")
//创建
.build();
//创建触发,定义何时,如何运行
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.startNow()
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.repeatForever()
.withIntervalInSeconds(5)
)
.build();
//添加到scheduler
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}
运行结果
3,同spring整合,并使用计划任务CronTrigger
查阅spring-framework-reference.pdfspring整合文档中的Using the Quartz Scheduler
第一步:导入依赖
<!-- spring context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.9.RELEASE</version>
</dependency>
<!-- spring context support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.2.9.RELEASE</version>
</dependency>
<!-- spring web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.2.9.RELEASE</version>
</dependency>
<!-- springtx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.2.9.RELEASE</version>
</dependency>
<!-- quartz核心 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
<version>2.2.3</version>
</dependency>
<!-- slf4j log4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
第二步:配置web.xml,设置监听器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>storemanager</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 整合spring容器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring容器位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
</web-app>
创建applicationContext.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置扫描 -->
<context:component-scan base-package="cn.simple.quartz.service"/>
<!-- 创建包装job -->
<bean id="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="cn.simple.quartz.job.MyJob"></property>
</bean>
<!-- 配置crontrigger -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="myJobDetail"/>
<!-- run every morning at 6 AM -->
<property name="cronExpression" value="0/5 * * * * ?"/>
</bean>
<!-- 配置调度器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>
</beans>
Tomcat:run调试:
结果如下
- quartz快速入门(一)
- Quartz 框架快速入门(一)
- Quartz 框架快速入门(一)
- Quartz 框架快速入门(一)
- Quartz 框架快速入门(一)
- Quartz任务调度快速入门(一)
- Quartz.NET学习系列(一)--- 快速入门
- Quartz定时器快速入门学习(一)
- Quartz(01) Quartz快速入门
- Quartz快速入门指南
- Quartz教程:快速入门
- 定时器(Quartz)快速入门
- Quartz教程:快速入门
- Quartz 快速入门指南
- quartz快速入门
- QuartZ 快速入门
- 定时器(Quartz)快速入门
- Quartz快速入门
- 读取注册表内容
- js模块化规范
- 一个字符替换的算法
- Thinkphp 模型->快捷查询
- 文件上传Content-disposition中Attachment和inline的区别
- quartz快速入门(一)
- 理解高并发(19).volatile原理及用法
- Oracle 11g导出空表、少表的解决办法
- 2.1字符编码相关知识点简介
- CodeVS 3012 & 3037 线段覆盖4 & 5
- lcd驱动框架
- NYOJ题目36-最长公共子序列(经典动态规划题)
- shell解析命令行的过程以及eval命令
- 初识scala