SpringMVC 定时任务的配置有两种
第一种:
使用 @Scheduled(cron="0 0 1 * * ?") 注解
同时在配置文件中引入
xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"> <!-- 计划任务配置,用 @Service @Lazy(false)标注类,用@Scheduled(cron = "0 0 1 * * ?")标注方法 --> <task:executor id="executor" pool-size="10"/> <task:scheduler id="scheduler" pool-size="10"/> <task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true"/>
cron="0 0 1 * * ?" 表示定时执行的时间(每天凌晨1点)
第二种:
使用配置文件的方式
<!-- 定义每天凌晨执行调度任务 -->
首先配置定时任务 <bean id="doTime2" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="dosettaskTime" /> </property> cron表达式 <property name="cronExpression"> <value>0 0 1 * * ?</value> </property> </bean> <bean id="dosettaskTime" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 调用的类 <property name="targetObject"> <bean class="com.sxs.controller.TasktimerController" /> </property> 调用类中的方法 <property name="targetMethod"> <value>taskSetEveryDay</value> </property> <property name="concurrent" value="false" /> </bean>
然后调用,配置的定时任务都放在list里循环。
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuertz" lazy-init="true" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="doTime2"/> </list> </property> </bean>