在springBoot3.0的版本中加了Scheduled定时任务器,通过注解方便我们设置定时任务
如何使用Scheduled定时任务器
1.在启动类上加上@EnableScheduling注解,表示对定时任务的支持
/**
* 启动器
*/
@EnableScheduling
@SpringBootApplication
public class LTMCAdminApp {
public static void main(String[] args) {
SpringApplication.run(LTMCAdminApp.class, args);
}
}
2.编写一个定时任务类,加上@Component
3.在需要定时执行的方法上加上@Scheduled注解,定时执行
/**
*
* @ClassName: TaskScheduling
* @Description: 定时器
*/
@Component
@ConditionalOnProperty(prefix = "scheduling", name = "enabled", havingValue = "true")
public class TaskScheduling {
@Autowired
ProxyPoolTask proxyPoolTask;
@Scheduled(cron = "0 0 1 * * ? ")
public void setProxyPoolCount() {
proxyPoolTask.executor();
}
}
注意:@Scheduled注解是配置时间域的,他有cron和fixedDelay两种形式
cron
其中cron表达式又有两种语法格式,分别是七位和六位
七位:@Scheduled(cron=“0 0 1 0 0 0 0”)每一位分别代表着秒,分,时,天,月,周,年
六位:@Scheduled(cron=“0 0 1 0 0 0”)每一位分别代表着秒,分,时,天,月,周
而cron中有几个特殊符号要注意一些
比如说:
星号(*) 代表的是时间的每一时刻:@Scheduled(@cron=“0 0 1 * * *”)表示每一天的凌晨一点执行
问好(?)代表占位符,无意义的值:@Scheduled(@cron=“0 0 1 1 1 ?”)表示一月一号凌晨一点执行
减号(-)代表一个时间范围:@Scheduled(@cron=“10-15 0 1 1 1 ?”)表示一月一号凌晨一点的第10至 第15秒执行
逗号(,)表示一个列表值,并列存在:@Scheduled(@cron=“10,15 0 1 1 1 ?”)表示一月一号凌晨一点的第10和第15秒执行
斜杠(/)代表间隔:@Scheduled(@cron=“0/2 * * * * *”)表示从第0秒开始每隔两秒执行一次,/前面是表示从什么时间开始,/后面的数字代表时间间隔
fixedDelay
@Scheduled(fixedDelay = 60*1000)表示每1分钟执行一次