<!--复杂的触发器 -->
<bean id="complexPrintInfoTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="tsTasKdoWeb"/>
</property>
<property name="cronExpression">
<value>*/5 * * * * ?</value>
</property>
</bean>

<!-- spring触发工厂 -->
<bean  id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="complexPrintInfoTrigger"/>
</list>
</property>
</bean>上面代码是我的applicationContext.xml中的一段,当我的程序一跑起来便会自动走触发器中的配置,将value传到后台并设置每五秒执行一次。现在我想关闭这个动作,所以我想到的是先获得spring触发工厂的bean,网上查到是 Schedule schedule = context.getBean(beanName);在执行schedule.shutDown();就可以实现。      我想问各位大神,首先我解决这个问题的出发点对不对,其次如果对我却怎么也获得不到这个bean的配置,谁能帮帮我。

解决方案 »

  1.   

    每5秒执行一次没必要使用复杂触发器吧?简单触发器就行啦,复杂触发器用在含有特殊时间的例外的情况
    <bean id="helloTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail">
    <ref bean="sayHelloJob"/>
    </property>
    <property name="startDelay">
    <value>1000</value>
    </property>
    <property name="repeatInterval">
    <value>3000</value>
    </property>
    </bean> 
    timer.cancel();方法可以取消任务啊
      

  2.   

    LZ,你的 tsTasKdoWeb这个配置了?
    还有没5秒跑定时任务,这个太快了吧。。<bean id="timeGetPackageState2Infomation" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject">
                <ref bean="tmsRouteSearchManagerAction"/>
            </property>
            <property name="targetMethod">
                <value>getPackageInfomation</value>
            </property>
        </bean>
        <bean id="timeGetPackageState2InfomationTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
         <property name="jobDetail"> 
             <ref bean="timeGetPackageState2Infomation"/> 
         </property>
         <property name="cronExpression">
           <value>0 */1 * * * ?</value>  <!-- 每5分钟触发一次 -->
    <!--          <value>0 0 */1 * * ?</value>   每1小时触发一次 -->
         </property>
     </bean>
    <!-- TMS转运   1小时一次 end-->
        
    <bean autowire = "no" class = "org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref local="timeGetPackageState2InfomationTrigger"/>
                </list>
            </property>
        </bean>