Quartz是一个作业任务调度的框架,所在项目组中“消息推送模块”使用到此框架,于是写个demo熟悉下quart的用法;

使用Spring框架来集成Quartz的任务调度任务。

1、搭建Spring框架,Quartz框架

  1.1、拷贝Spring框架、Quartz所需要的jar包(quartz.jar);

  1.2、在整个项目的web.xml主配置中添加spring的核心配置(监听spring、核心配置)

 <context-param>  <!--spring核心配置文件-->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>
<listener> <!--spring的监听-->
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

  1.2、spring配置文件的创建:spring-config.xml

<beans>
<!-- 要调用的工作类 -->
<bean id="quartzJob" class="com.fdx.QuartzJob"></bean>
<!-- 定义调用对象和调用对象的方法 -->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject"><ref bean="quartzJob" /></property>
<!-- 调用类中的方法 -->
<property name="targetMethod"><value>work</value></property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail"> <ref bean="jobtask" /></property>
<property name="cronExpression"> <value>0/10 * * * * ?</value> </property><!-- cron表达式 -->
  </bean>
  <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
  <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers"> <list> <ref bean="doTime" /> </list> </property>
  </bean>
</beans>

  1.3、工作类

package com.fdx;
import java.util.Date;
public class QuartzJob {
public void work() {
System.out.println("Quartz的任务调度!!!"+new Date());
     //在控制台会被作为“任务”推送给控制台的语句,隔一段时间会被打印在控制台
}
}

  1.4、main类【启动整个定时任务的主类】

 package com.fdx;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainTest {
public static void main(String[] args)
{
System.out.println("Test start.");
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
//如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
//context.getBean("startQuertz");
System.out.print("Test end..");
}
}

  1.5、控制台输出的结果如下:

Test start.
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Test end..
Quartz的任务调度!!!Wed Jan 13 15:49:50 CST 2016
Quartz的任务调度!!!Wed Jan 13 15:50:00 CST 2016
Quartz的任务调度!!!Wed Jan 13 15:50:10 CST 2016
Quartz的任务调度!!!Wed Jan 13 15:50:20 CST 2016
Quartz的任务调度!!!Wed Jan 13 15:50:30 CST 2016
Quartz的任务调度!!!Wed Jan 13 15:50:40 CST 2016
Quartz的任务调度!!!Wed Jan 13 15:50:50 CST 2016

最新文章

  1. java学习点
  2. winSocket数据传输
  3. Linux 下根据进程名kill进程
  4. Linux删除文件夹命令
  5. ASP.NET MVC 前端(View)向后端(Controller)中传值
  6. 纯CSS完美实现垂直水平居中的6种方式
  7. matlab操作之--读取指定文件夹下的“指定格式”文件
  8. CSAPP:Binary Bomb
  9. 微信小程序环境搭建
  10. The app references non-public selectors in payload With Xcode6.1
  11. 如何使用sourcetree 或 IDEA 自带的git合并代码?
  12. GridView 翻页 索引超出范围
  13. 爬虫(scrapy--豆瓣TOP250)
  14. 安装FireEye渗透测试套件commando-vm
  15. 深蓝词库转换2.2发布,支持手心输入法和Win10微软拼音
  16. vue 自学项目笔记
  17. IT的2017,面临数字生态系统新挑战,该怎么办?
  18. apache占用80端口,导致nginx启动不成功
  19. Python爬虫-豆瓣电影 Top 250
  20. 从MySQL开发规范处看创业

热门文章

  1. Python---面向对象的三大特征
  2. JDBC接口封装
  3. VUE实现限制输入框最多输入15个中文,或者30个英文
  4. 如何导出不带.svn的文件夹
  5. Linux的解压缩相关命令
  6. 箱排序(Bin Sort)
  7. JavaWEB开发03——JS
  8. 冲刺周三The Third Day
  9. jquery.fileupload-image-editor.js
  10. tensorflow学习——调试ctc的两个bug