Spring + Quartz配置实例

 

参考文章【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容器生命周期进行启动和停止的动作。 

配置文件:


注意:项目中需要加载需要加入spring.jar   quartz-all-1.6.0.jar   log4j-1.2.14.jar   commons-collections.jar   jta.jar   commons-logging.jar这几个包

以上未经测试,

只是觉得有用,留个备用

转载之(http://www.blogjava.net/yangaiyou/archive/2008/10/18/235237.html)

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>restful</display-name>
	<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>

 applicationContext.xml.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"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
			    http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- 要调用的工作类 -->
    <bean id="quartzJob" class="cn.hk.task.PrintLogTask"></bean>
    <!-- 定义调用对象和调用对象的方法 -->
    <bean id="jobtask"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject">
            <ref bean="quartzJob" />
        </property>
        <!-- 调用类中的方法 -->
        <property name="targetMethod">
            <value>pringLog</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/5 11 11 * * ?</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>
 PrintLogTask.java //最终要执行的类import java.util.Date;
public class PrintLogTask {
	
	public void pringLog(){
		
		System.out.println("日志打印时间"+new Date(System.currentTimeMillis()).toLocaleString());
	}
}

 //info,因为最后5秒钟已经不符合11:11分了,所以没有打印 

日志打印时间2012-7-12 11:11:10
日志打印时间2012-7-12 11:11:15
日志打印时间2012-7-12 11:11:20
日志打印时间2012-7-12 11:11:25
日志打印时间2012-7-12 11:11:30
日志打印时间2012-7-12 11:11:35
日志打印时间2012-7-12 11:11:40
日志打印时间2012-7-12 11:11:45
日志打印时间2012-7-12 11:11:50
日志打印时间2012-7-12 11:11:55 

 

 

你可能感兴趣的:(spring)