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

一, 继承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项目.

完整的测试项目下载

转载于:https://www.cnblogs.com/mqyg/p/4303192.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值