我需要每隔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>
有帮助吗?

解决方案

对于此任务,第23章。计划和线程池是你的朋友。也就是说,这是一个简短的总结。

首先,定义 Job

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

现在,您需要使用触发器和 SchedulerFactoryBean 来安排作业。对于触发器,我建议在你的情况下使用 SimpleTriggerBean

<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>

其他提示

你需要更多的管道才能使Quartz工作。只是单独声明 MethodInvokingJobDetailFactoryBean 就不会做任何事情。

然而,Quartz对此有些过分,Java5 +可以自行完成。我建议阅读Spring的 ScheduledExecutorFactoryBean ,与 MethodInvokingRunnable ,允许您定期调用您的方法。

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

请参阅关于Quartz的Spring手册

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top