想达到SchedulerFactoryBean 控制triggers任务随着服务器启动而执行,之后就按照定时的来执行,各位大神怎么做到啊。
看这个链接是关于定时器的
至于你说的服务器启动就启动定时任务,可以配置.xml文件,有listener,或者servlet都可以。
这个是需要单独配置triggers的执行时间的,SchedulerFactoryBean只是一个任务调度工厂,服务启动调度工厂会去启动list中的triggers,至于怎么执行
是需要在triggers中单独配置,
0 0/32 8,12 * * ? //这个具体怎么配置你自己去查,依次代表秒分时,日,月,年,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<bean id="jobDetail_1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="TSupeviseServiceImpl" />
</property>
<property name="targetMethod">
<value>processTSupervise</value><!-- 处理数据到业务督办表T_Supervise中 -->
</property>
</bean>
<bean id="cronTrigger_1" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail_1" />
</property>
<property name="cronExpression">
<value>0 0 10 * * ? *</value><!-- 每天上午10点执行 --> //在这里配置。
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger_1" />
</list>
</property>
</bean>
</beans>
<!-- ==========动态添加任务START========== -->
<!-- 注入StdSchedulerFactory 注入这个类可以使用quartz.properties配置文件 -->
<bean id="stdSchedulerFactory" class="org.quartz.impl.StdSchedulerFactory" />
<!-- 注册SpringContextUtil用于获取ApplicationContext -->
<bean id="springContextUtil" class="cn.com.silence.utils.SpringContextUtil"></bean>
<!-- 注册QuartzJobFactory -->
<bean id="quartzJobFactory" class="cn.com.silence.quartz.QuartzJobFactory" />
<!-- 主定时计划 -->
<bean id="managerTriggerBean"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="methodInvokingJobDetailFactoryBean" />
<!-- 延迟启动 -->
<property name="startDelay" value="1000"></property>
<property name="repeatInterval" value="6000"></property>
</bean>
<!-- 注册SchedulerFactoryBean -->
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="managerTriggerBean" />
</list>
</property>
</bean>
发现刚才链接没贴上去 http://blog.csdn.net/weixin_41202187/article/details/78982939
谢谢大家我自己已经解决,看了下大家说的好像并没有说到点上,我百度到的方法是:同一个弄两个定时器,一个定时器是在启动时就触发,
但是只执行一次这样就能达到我需要的服务启动就执行,之后按照定时执行,关键代码如下:
<bean id="firstCommodityAndShopCategoriesTimerTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="commodityAndShopCategoriesTimerJob"/>
<property name="startDelay" value="1000"/> <!-- 启动延迟 单位/毫秒-->
<property name="repeatCount" value="0"/> <!-- 重复次数 -->
</bean>
之前网上很多说配置SchedulerFactoryBean lazy-init=falase等,其实都不对,调度工厂本来就是随着spring容器初始化就开始调度定时任务,不然
怎么实现定时,定时的开始时间就是服务启动时间,所以你懂得