在默认的Spring Boot中,载入的Spring架包其实较少,如果此时直接启用任务管理,如下:
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
<ref bean="simpleTrigger"/>
</list>
</property>
</bean>
则会提示类“org.springframework.scheduling.quartz.SchedulerFactoryBean”不存在,此时需要在POM.xml文件中添加如下内容:
<!-- 定时任务 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<!-- 添加Quartz支持 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
再次运行代码,一切正常。
最后附上配置实例:
<!-- 首先定义任务 -->
<bean id="logScanJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="configTaskService"/>
<property name="targetMethod" value="logScan"/>
<!-- 多个定时器时,不会同时执行任务 -->
<property name="concurrent" value="false"/>
</bean>
<!-- 然后定义定时器 , 日期定时器-->
<bean id="logScanTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="logScanJob"/>
<!-- CRON 顺序依次为秒,分钟,小时,日,月,周(星期几,从1开始星期天,7为星期六),年 -->
<!-- ?仅可用于第4位日,与第6为周,表示不指定值,最多只能有一个 -->
<property name="cronExpression" value="0 0 6 * * ?"/>
</bean>
<!-- 最后,注册定时器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="logScanTrigger"/>
</list>
</property>
</bean>