美丽涵涵童装店--说我博客名字,给你们打折!
随笔 - 82  文章 - 266  trackbacks - 0
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678


点击这里给杨爱友发消息
美丽涵涵童装店
说我博客名字,给你们打折!

常用链接

留言簿(6)

随笔分类

随笔档案

文章档案

好友的BLOG

搜索

  •  

最新评论

阅读排行榜

评论排行榜

 参考文章【http://www.cnblogs.com/kay/archive/2007/11/02/947372.html
            【http://www.diybl.com/course/3_program/java/javajs/2008530/118164.html
各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务。对于一个典型的MIS系统来说,在每月1号凌晨统计上个月各部门的业务数据生成月报表,每半个小时查询用户是否已经有快到期的待处理业务……,这样的例子俯拾皆是,不胜枚举。

    Quartz 在开源任务调度框架中的翘首,它提供了强大任务调度机制,难能可贵的是它同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。
Spring为创建Quartz的Scheduler、Trigger和JobDetail提供了便利的FactoryBean类,以便能够在Spring 容器中享受注入的好处。此外Spring还提供了一些便利工具类直接将Spring中的Bean包装成合法的任务。Spring进一步降低了使用Quartz的难度,能以更具Spring风格的方式使用Quartz。概括来说它提供了两方面的支持:
    1)为Quartz的重要组件类提供更具Bean风格的扩展类;
    2)提供创建Scheduler的BeanFactory类,方便在Spring环境下创建对应的组件对象,并结合Spring容器生命周期进行启动和停止的动作。
配置文件:

<?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="quartzJob" class="test.Task"></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>
        
<!-- cron表达式 -->
        
<property name="cronExpression">
            
<value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
        
</property>
    
</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>
要调度的工作类:
public class Task{
    
public void work() {
        System.out.println(
"Quartz的任务调度!");
    }
}
主测试文件:
public class QuartzTest {
    
public static void main(String[] args) {
        System.out.println(
"Test start.");
        ApplicationContext context 
= new ClassPathXmlApplicationContext("applicationContext.xml");
        
//如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
        System.out.print("Test end..\n");

    }

}

注意:项目中需要加载需要加入spring.jar   quartz-all-1.6.0.jar   log4j-1.2.14.jar   commons-collections.jar   jta.jar   commons-logging.jar这几个包
posted on 2008-10-18 22:58 杨爱友 阅读(25207) 评论(9)  编辑  收藏 所属分类: java相关技术

FeedBack:
# re: Spring + Quartz配置实例 2008-10-19 14:16 隔叶黄莺
10,15,20,25,30,35,40,45,50,55就是10/5吧  回复  更多评论
  
# re: Spring + Quartz配置实例 2008-10-19 23:25 杨爱友
@隔叶黄莺
这个是每5秒进行一次任务调度,关于cron表达式的说明,【http://www.cnblogs.com/kay/archive/2007/11/02/947372.html】这个文章里面有比较详细的解释  回复  更多评论
  
# re: Spring + Quartz配置实例 2011-06-22 11:27 easy518网址导航
# re: Spring + Quartz配置实例 2012-05-29 15:26 remind
我按你的上面的代码执行,设定时间是每5分钟一次,但5分钟后只要调用了Task类就一直不停的循环调用,不停的输出“Quartz的任务调度!”这是怎么回事啊!!!  回复  更多评论
  
# re: Spring + Quartz配置实例 2012-05-29 21:41 remind
@remind
我自己cron写错了  回复  更多评论
  
# re: Spring + Quartz配置实例[未登录] 2013-08-28 20:53 a
@杨爱友
0/5 * * * * ?  回复  更多评论
  
# re: Spring + Quartz配置实例[未登录] 2013-08-30 09:10 阿呆
操作数据库报,空指针异常!求老师指点。  回复  更多评论
  
# re: Spring + Quartz配置实例 2014-04-19 22:54 最代码
# re: Spring + Quartz配置实例 2014-04-26 10:45 最代码
请参考代码:java计划任务调度框架quartz结合spring实现调度的配置实例代码分享,下载地址:http://www.zuidaima.com/share/1755429240540160.htm  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
美丽涵涵童装店
亲,说我博客名字,给你们打折!