暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringBoot+Mysql实现定时器

Java有货 2018-08-06
208
点击上方Java有货"关注我们

作者 杨海吉

来源 Java有货

SpringBoot 整合 Mysql 实现定时任务

整合Mysql
<dependencies>
   <dependency><!--添加Web依赖 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency><!--添加Mybatis依赖 -->
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency><!--添加MySql依赖 -->
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency><!--添加Test依赖 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

   </dependencies>

配置数据源
spring:
 datasource:
   url: jdbc:mysql://localhost:3306/test?useSSL=false
   username: root
   password: root

创建数据源
CREATE TABLE `cron`  (
 `id` int(11),
 `cron` varchar(30)
);

INSERT INTO `test`.`cron` (`id`, `cron`) VALUES ('1', '0/5 * * * * ?');

创建定时器
@Configuration
@EnableScheduling
public class CompleteScheduleConfig implements SchedulingConfigurer {
   
   @Mapper
   public  interface CronMapper{
       @Select("select cron from cron")
       String getCron();
   }

   @Autowired
   @SuppressWarnings("all")
   CronMapper cronMapper;

   /**
    * 执行定时任务
    * @param scheduledTaskRegistrar
    */

   @Override
   public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
       scheduledTaskRegistrar.addTriggerTask(
               //1.添加任务内容(Runnable)
               () -> System.out.println("执行定时任务 -> 数据库: " + LocalDateTime.now().toLocalTime()),
               //2.设置执行周期(Trigger)
               triggerContext -> {
                   //2.1 从数据库获取执行周期
                   String cron = cronMapper.getCron();
                   //2.2 合法性校验.
                   if (StringUtils.isEmpty(cron)) {
                       // Omitted Code ..
                   }
                   //2.3 返回执行周期(Date)
                   return new CronTrigger(cron).nextExecutionTime(triggerContext);
               }
       );
   }    
}

执行效果

到这里SpringBoot结合Mysql实现定时任务就结束了!

小编寄语

小编创建了一个关于Java学习讨论的微信群!想进去的可以联系小编!

小编微信:372787553

备注为进群,通过后小编会邀请您进群!

Ja
va
文章转载自Java有货,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论