我需要每隔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>
答案 0 :(得分:4)
你需要更多的管道才能使Quartz工作。只是声明MethodInvokingJobDetailFactoryBean
本身就无能为力。
然而,Quartz对此有些过分,Java5 +可以自行完成。我建议阅读Spring的ScheduledExecutorFactoryBean,它与MethodInvokingRunnable结合使用,可以让你定期调用你的方法。
答案 1 :(得分:4)
对于此任务,Chapter 23. Scheduling and Thread Pooling is your friend。也就是说,这是一个简短的总结。
首先,定义您的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>
答案 2 :(得分:0)
到目前为止,您所做的只相当于只实例化一个MethodInvokingJobDetailFactoryBean() - 基本上你所做的就是创建了Job。现在你需要对它的安排方式以及触发它的方式进行一些配置。