
①:@Component:要声明为bean,没有声明的话,启动类启动无法实现定时效果。
②:@EnableScheduling:在配置类上使用,开启计划任务的支持(类上)。
③:@Configuration:由于@EnableScheduling是声明在配置类上的,所以定时器类添加了该注解。
3.编写定时任务(也就是一个方法罢了,只不过在该方法是在@EnableScheduling声明类下,并多了一个@Scheduled(cron = "0/10 * * * * ?")注解)
4.在定时任务中实现自己的逻辑编写
测试效果如下:
每天进步一点点吧~
1.基于XML的定时器
1.1 Spring的XML文件片段内容
方法1:
<!-- 定时器开关-->
<task:scheduled-tasks>
<!-- 定时任务(可以有多个定时任务),和执行时间,每5秒执行一次 -->
<task:scheduled ref="myTask" method="printSomeThing" cron="*/5 * * * * ?"></>
</ task:scheduled-tasks >
<!-- 定时任务Bean所在位置 -->
<context:component-scan base-package="com.yuxiSofterware.task"/>
方法2:
<bean id="demoTask" class="com.yuxiSofterware.task.DemoTask"/>
<bean id="BuildTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="demoTask"/>
<property name="targetMethod" value="printSomeThing" />
<property name="concurrent" value="false" />
</bean>
<bean id="BuildTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="BuildTask"/>
<property name="cronExpression" value="0/5 0 * * * ?" />
</bean>
1.2 Bean类片段内容
package com.yuxiSofterware.task
/**
* 基于XML的Spring定时器
* @author yuxiSofterware
*/
public class DemoTask {
public void printSomeThing() {
System.out.println("XML定时器触发。")
}
}
1.3 编写main方法,解析Spring的XML文件,定时器就会按时触发,编写过程略。
2. 基于注解的Spring定时器
package com.yuxiSofterware.task
import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Component
/**
* 基于注解的Spring定时器
* @author yuxiSofterware
*/
@Component
public class DemoTask {
/**
* 定时任务,每五秒钟执行一次
*/
@Scheduled(corn=" */5 * * * * ? ")
public voidprintSomeThing() {
System.out.println("XML定时器触发。")
}
}
3. 关于定时器,定时任务时间的说明
定时表达式的格式:秒 分 时 日 月 周 年(可选)。
字段名 允许的值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日 1-31 , - * ? / L W C
月 1-12 or JAN-DEC , - * /
周几 1-7 or SUN-SAT , - * ? / L C #
年 (可选字段) empty, 1970-2099 , - * /
“?”字符:表示不确定的值
“,”字符:指定数个值
“-”字符:指定一个值的范围
“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m
“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X
“W”字符:指定离给定日期最近的工作日(周一到周五)
“#”字符:表示该月第几个周X。6#3表示该月第3个周五
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)