需要在项目启动的时候只执行一次某些任务:
1、pom文件加上依赖
<dependency><groupId>org.quartz.scheduler</groupId><artifactId>quartz-jobs</artifactId><version>2.3.0</version>
</dependency>
<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version>
</dependency>
2、贴上spring-quartz.xml代码,再解释:
<!-- 指定定时任务类 -->
<bean id="loadAssets" class="com.**.**.autoLoadAssetsmanagersJob"/><!-- 指定定时任务类型、方法 -->
<bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject"><ref bean="loadAssets" /></property><property name="targetMethod"><value>startLoadAssets</value></property>
</bean><!-- 触发器,可配置cron表达式 -->
<bean id="loadAsssetsTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail"><ref bean="myJobDetail" /></property><property name="cronExpression"><value>0 * * * * ?</value></property></bean><!-- 触发器,配置项目启动后任务就执行一次 repeatCount=0即表示重复0次-->
<bean id="rsh_simpleTrigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"><property name="jobDetail" ref="myJobDetail" /><property name="startDelay" value="500" /><property name="repeatInterval" value="0" /><property name="repeatCount" value="0" /></bean><!-- 调度器 --><bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="recordPlanTrigger"/>
<!-- <ref bean="loadAsssetsTrigger"/>--><ref bean="rsh_simpleTrigger1"/></list></property></bean>
首先指定定时任务的类,方法,然后配置到触发器,第一个触发器可以配置cron来定时启动,第二个触发器配置repeatCount为0,即表示重复次数为0,也就是只会早项目初始化后执行一次,就不会定时执行了,最后把第二个触发器加入到调度器即可。