Spring定时任务有两种方式:1.基于xml配置的方式 ,2.注解方式。
第一种:.基于xml配置的方式
a.需要在配置文件加入Task启用命名空间和声明,配置文件信息如图:
b.基本作业类,如图:
说明:ref参数指定的即任务类,method指定的即需要运行的方法,cron及cronExpression表达式(cronExpression表达式百度下)
第二种:注解方式,
a.配置文件信息,如图:
b.作业类:
如图:
该注解有三个方法或者叫参数,分别表示的意思是:
@Scheduled(cron="* * * * * * * ")
cron:指定cron表达式。
fixedDelay:官方文档解释:An interval-based trigger where the interval is measured from the completion time of the previous task. The time unit value is measured in milliseconds.即表示从上一个任务完成开始到下一个任务开始的间隔,单位是毫秒。
fixedRate:官方文档解释:An interval-based trigger where the interval is measured from the start time of the previous task. The time unit value is measured in milliseconds.即从上一个任务开始到下一个任务开始的间隔,单位是毫秒。
配置完成了。
注意:
1、spring的注解@Scheduled 需要写在实现方法上;
2、定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true),不能指向任何的参数;
3、如果该方法需要与应用程序上下文的其他对象进行交互,通常是通过依赖注入来实现;
4、实现类上要有组件的注解@Component。
Spring taks还有很多参数,具体请参考如下资料:
http://www.springframework.org/schema/task/spring-task-3.0.xsd
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html