spring定时器介绍

    平时我们工作时会经常遇到有关定时器的业务需求,比如定时去更新商品的销量这些,那其实我们可以根据业务的实际需求去定制开发定时器,这里主要讲解和spring有关的定时器,下面直接上代码

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.0.RELEASE
         
    

springboot已经整合了有关定时器的依赖,直接引入即可操作,很方便

首先我们需要了解一下cron表达式,这里展示的cron表达式是每秒钟更新一次,这个具体怎么写需要根据业务的实际需求,当然没必要死记硬背,这里贴出一个网站,直接去那里动态生成即可 http://cron.qqe2.com/

1.我们需要一个Config对象,属于java配置方式,这里写的比较简单,放置于Application同级目录,如果放置其他地方,那需要设置一个@ComponentScan注解,表明我们需要在哪里扫描具体的Task任务

@Configuration
@EnableScheduling
public class TaskConfiguration {

}

2.定时任务具体的业务逻辑

@Component
public class UpdateSaleNumTask {

    private final Logger logger = LoggerFactory.getLogger(UpdateSaleNumTask.class);

    @Scheduled(cron = "* * * * * ?")
    public void updateSaleNum() {
        logger.info("============>开始执行更新销量");
        //这里定义一个时间,方便观察cron表达式对计划任务的作用
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        logger.info("执行销量更新:时间{}", format.format(new Date()));
        logger.info("============>销量更新完毕");
    }

}

结果:

c.m.schedule.task.UpdateSaleNumTask      : ============>开始执行更新销量
c.m.schedule.task.UpdateSaleNumTask      : 执行销量更新:时间2018-11-25 15:35:54
c.m.schedule.task.UpdateSaleNumTask      : ============>销量更新完毕
c.m.schedule.task.UpdateSaleNumTask      : ============>开始执行更新销量
c.m.schedule.task.UpdateSaleNumTask      : 执行销量更新:时间2018-11-25 15:35:55
c.m.schedule.task.UpdateSaleNumTask      : ============>销量更新完毕
c.m.schedule.task.UpdateSaleNumTask      : ============>开始执行更新销量
c.m.schedule.task.UpdateSaleNumTask      : 执行销量更新:时间2018-11-25 15:35:56
c.m.schedule.task.UpdateSaleNumTask      : ============>销量更新完毕

上面的基本上就是一个简单的案例,后面我们会跟进更为复杂的定时方案

你可能感兴趣的:(定时任务)