spring中实现定时任务有spring quartz和spring Task两种方式,quartz默认是多线程进行的,配置比较复杂,而spring Task默认是单线程运行的,配置实现相对简单,下面以spring Task来实现一个简单的定时任务
package com.example.demo.test;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TaskDemo {
@Scheduled(cron = "* * * * * ?")
public void test(){
System.out.println("测试定时任务----------");
}
}
首先声明要实现的定时任务类为spring中的一个组件,接下来根据业务需求配置相应的cron表达式,这里推荐一篇关于cron表达式相关用法的文章转自https://blog.csdn.net/weixin_40426638/article/details/78959972,然后在我们的spring boot的启动类上标注@EnableScheduling来开启对定时任务的支持
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
这样我们在启动应用的时候定时任务就会被调用,spring Task只能实现简单的定时任务,如果我们有动态的扩展和管理定时任务的需求,推荐使用spring quartz来实现