在Spring框架中,提供了一些用于调度任务的注解,用于实现定时任务的执行。
相关注解 #
| 注解 | 说明 |
|---|---|
@EnableScheduling |
在Spring配置类上添加@EnableScheduling注解来启用定时任务功能 |
@Scheduled |
用于标记定时任务的方法,并配置任务的触发时间表达式或固定频率。 |
注意事项 #
- 定时任务方法必须是无参方法,可以是
void返回类型或具有返回值。 - 时间表达式可以使用cron表达式或固定频率进行配置,例如
cron = "0 0 8 * * ?"表示每天早上8点触发,fixedRate = 5000表示每隔5秒触发一次。 - 定时任务的方法默认是串行执行的,如果任务执行时间较长,可能会影响后续任务的触发。可以通过配置线程池或使用异步方法(也就是可以和
@Async搭配使用)来并发执行定时任务。 - 定时任务应避免使用阻塞操作,例如长时间的I/O操作或线程休眠等,以免影响整个应用程序的性能和响应性。
代码示例 #
配置类开启定时任务
@Configuration
@ComponentScan("top.ygang")
@EnableScheduling
public class SpringConfiguration {
}
定义任务方法
@Component
public class MyTask {
@Scheduled(cron = "0 0 8 * * ?") // 每天早上8点触发
public void executeTask() {
// 定时任务执行的方法体
}
}