码迷,mamicode.com
首页 > 编程语言 > 详细

Spring中使用quartz执行定时任务的两种方式

时间:2015-03-04 16:40:50      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

一, 继承spring封装Quartz类(org.springframework.scheduling.quartz.QuartzJobBean)方式

spring-mvc-quartz2.xml:

<bean id="job2Trigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
    <property name="jobDetail">  
        <bean class="org.springframework.scheduling.quartz.JobDetailBean">  
            <property name="jobClass" value="com.yueguang.schedule.Job2"/>  
            <property name="jobDataAsMap">    <!-- 只能这么注入属性,不能在任务类里注入 -->  
                <map><entry key="job2Service" value-ref="job2Service"/></map>  
            </property> 
        </bean>  
    </property>  
    <!-- 指定Cron表达式 -->  
    <property name="cronExpression" value="0/1 * * * * ?"/>  
</bean>

<bean id="schedulerFactory" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
        <ref bean="job1Trigger" />
    <!-- <ref bean="job2Trigger" /> -->
    </list>
    </property>
</bean>    

二,利用spring MethodInvokingJobDetailFactoryBean类,不需要继承.

spring-mvc-quartz1.xml

<!-- job bean 配置 -->
    <bean id="job1"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="job1bean" />
        <property name="targetMethod" value="justDoIt" />
        <property name="concurrent" value="true" />    <!-- 设置为true则多个job并发执行 -->
    </bean>
    <!-- trigger -->
    <bean id="job1Trigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="job1" />
        <property name="cronExpression" value="0/1 * * * * ?" />
    </bean>
    
    <!-- 定时任务调度器 -->
    <bean id="schedulerFactory" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="job1Trigger" />
                <!-- <ref bean="job2Trigger" /> -->
            </list>
        </property>
    </bean>

注:

1,在第一种方式中,不能在jobbean中直接以注解的方式注入spring bean组件,必须在jobDetail的属性jobDataAsMap中配置要注入的bean组件,同时需要在该jobbean中写好对应的setter.

2,下面的项目是maven项目.

完整的测试项目下载

Spring中使用quartz执行定时任务的两种方式

标签:

原文地址:http://www.cnblogs.com/mqyg/p/4303192.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!