0

我需要每 5000 毫秒调用一次 MngtImpl 类的 findItemByPIdEndDate() 方法,但似乎没有发生任何事情。我错过了什么吗?

<bean id="findItemByPIdEndDate" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="MngtImpl"/>
  <property name="targetMethod" value="findItemByPIdEndDate"/>
  <property name="repeatInterval" value="50000"/>
</bean>

@matt b我读过一些,这里的一切对我来说都是新的..所以我带着这个..又一次它不起作用,这次我错过了什么?

<bean id="findItemByPIdEndDate" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="MngtImpl" />
  <property name="targetMethod" value="findItemByPIdEndDate" />
</bean>

<bean id="compareDateTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail" ref="findItemByPIdEndDate" />
    <property name="startDelay" value="0" />
    <property name="repeatInterval" value="50000" />
</bean>
4

3 回答 3

4

要使 Quartz 工作,您需要更多的管道。仅仅声明MethodInvokingJobDetailFactoryBean它自己不会做任何事情。

但是,Quartz 对此有点过分,Java5+ 可以自己完成。我建议阅读 Spring 的ScheduledExecutorFactoryBean,它与MethodInvokingRunnable结合使用,允许您定期调用您的方法。

于 2009-10-22T11:57:12.417 回答
4

对于这个任务,第 23 章调度和线程池是你的朋友。也就是说,这是一个简短的摘要。

首先,定义你的Job

<bean id="findItemByPIdEndDate" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  <property name="targetObject" ref="MngtImpl"/>
  <property name="targetMethod" value="findItemByPIdEndDate"/>
</bean>

现在,您需要使用触发器和SchedulerFactoryBean. 对于触发器,我建议SimpleTriggerBean在您的情况下使用 a :

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
  <!-- see the example of method invoking job above -->
  <property name="jobDetail" ref="findItemByPIdEndDate" />
  <!-- 10 seconds -->
  <property name="startDelay" value="10000" />
  <!-- repeat every 50 seconds -->
  <property name="repeatInterval" value="50000" />
</bean>

要完成所有事情,请设置SchedulerFactoryBean

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
    <list>
      <ref bean="simpleTrigger" />
    </list>
  </property>
</bean>
于 2009-10-22T12:53:17.657 回答
0

到目前为止,您所做的相当于仅实例化 MethodInvokingJobDetailFactoryBean() - 基本上您所做的只是创建了 Job。现在您需要对它的调度方式以及触发它的方式进行一些配置。

查看Spring 手册中有关 Quartz 的部分

于 2009-10-22T12:38:38.887 回答