SpringBoot启用定时任务非常简单,不需要再像SpringMVC一样写很多的配置。SpringBoot为我们内置了定时任务,我们只需要一个注解就可以开启定时任务了

  • 首先在启动类上使用注解@EnableScheduling
@SpringBootApplication
@EnableScheduling
public class HestiaApplication {

	public static void main(String[] args) {
		SpringApplication.run(HestiaApplication.class, args);
	}

}
  • 在需要使用定时任务的类上使用注解@Compoment,在方法上使用注解@Scheduled
@Compoment
public class IndexController {

@Scheduled(fixedRate = 3000)
    public void task(){
        System.out.println("现在时间是:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }
}

@Compoment用来标明这是一个被Spring管理的Bean
@Scheduled是方法上注解,添加该注解的方法即为单个计划任务,有两种方式可以定义:

  1. @Scheduled(fixedRate = 3000)
    通过@Scheduled声明该方法是计划任务,使用fixedRate属性每隔固定时间执行一次

  2. @Scheduled(cron = "0 0/10 * * * ?")
    使用cron表达式可按照指定时间执行,这里是每10分钟执行一次;
    在线生成cron表达式 传送门

如果需要开启异步定时任务,需要在启动类上加上注解@EnableAsync同样需要在类上使用注解@Component,在方法上使用注解@Async