在方法上加上@Scheduled,然后在Spring Boot的主类(或者该任务类)上加入@EnableScheduling注解,启用定时任务的配置即可
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.xxx.GoodsService; @EnableScheduling @Component public class DeleteJob { private static Log log = LogFactory.getLog(DeleteJob.class); @Autowired private GoodsService goodsService; @Scheduled(cron = "0 0 */2 * * *") public void deleteGoodsData() { log.info("deleteGoodsData begin............."); try { int n = goodsService.deleteDeadDatas() ; log.info("删除数据量: " + n); } catch (Exception e) { log.info("异常 : " , e); } log.info("deleteGoodsData end............."); } }
@Scheduled详解
对于@Scheduled的使用可以总结如下几种方式:
@Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
@Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
@Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
@Scheduled(cron="*/5 * * * * *") :通过cron表达式定义规则