Spring集成Quartz实战

Spring集成Quartz实战

 

1、 为什么要在spring中集成Quartz


  Quartz是可以单独工作的,可以通过实现job接口等方法来实现,这些方法在quartz官方example中都有,但是这样使用有一个弊端,那就是如果你的job/task中需要使用spring的bean,这样就惨了。

首先,quartz是独自实例化job的对象的,这个对象并不能被spring管理,所以它就无法通过依赖注入的方式注入spring bean。

其次,由于job是定时调度的,并没有servletrequest等web应用上下文,所以你还是没办法获取bean。

最后,你可以通过ApplicationContext acx = new ClassPathXmlApplicationContext("ApplicationContext.xml"); 通过acx获取serviceBean,这样的确能获取到bean,但是这样会导致容器中的bean翻倍,必须谨慎使用,否则可能造成各种问题,案例如下:
http://blog.csdn.net/glgl2424/article/details/22789961
所以,当你的web工程是基于spring搭建时,建议将quartz集成到spring中,方便使用。

 


2 准备工作


版本:quartz-1.5.1.jar 、spring3.0

 


3 配置方式


<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
  <ref bean="issueDtsUpdateJobTime"/>   <!-- 所有trigger都在此处列出,基本是每个job对应一个trigger -->
        </list>
    </property>
</bean>
 
    <!-- 定义触发时间 -->
<bean id="issueDtsUpdateJobTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail">
        <ref bean="issueDtsUpdateJobTask"/>
    </property>
        <!-- cron表达式 -->
    <property name="cronExpression">
            <!-- 每隔10秒执行一次-->
        <value>* * 0,1 * * ?</value>
    </property>
</bean>
   
    <!-- 定义任务,指定处理类和方法 -->
<bean id="issueDtsUpdateJobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject"><!-- 调用的类 -->
        <ref bean="issueDtsUpdateJob"/>
    </property>
    <property name="targetMethod">    <!-- 调用类中的方法 -->
        <value>updateAuto</value>
  </property>
</bean>   
    <!-- 要调用的工作类 -->
<bean id="issueDtsUpdateJob" class="com.dts.job.IssueDtsUpdateJob"></bean>

public class IssueDtsUpdateJob {
 public void updateAuto()
 {
  System.out.println("调度IssueDtsUpdateJob");
 }
}

 


4 Spring集成quartz的优势


  代码低侵入性,IssueDtsUpdateJob只是一个POJO,代码上与quartz没有任何引入和调用。
  
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值