
今天给大家介绍SpringBoot定时任务实现的定时的两几种方式,希望对大家能有所帮助!
框架介绍:SpringTask是实现式介绍Spring自带的轻量级定时任务工具,相比于Quartz使用更加简单方便,种方并且不需要不需要引入其他依赖即可使用。定时的两今天主要介绍注解的任务实现方式:
SpringBoot启动类配置 @EnableScheduling 注解
package my.springboot.task; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class TaskApplication { public static void main(String[] args) { SpringApplication.run(TaskApplication.class, args); } }创建测试类 TaskTest.java
package my.springboot.task.controller; import cn.hutool.core.date.DateUtil; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; @Component public class TaskTest { //每隔20秒执行一次 @Scheduled(cron = "0/20 * * * * ?") public void Test() { System.out.println("执行测试"+ DateUtil.now()); } }然后启动项目就可以了,高防服务器运行效果如下:

添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency>添加测试类 QuartzJobTest.java
package my.springboot.mybatis.controller; import cn.hutool.core.date.DateUtil; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class QuartzJobTest extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { String userName = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("userName"); String type = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("type"); System.out.println("测试类型:"+type+",种方你好,定时的两"+userName+",任务当前执行时间为:"+ DateUtil.now()); } }添加配置类 QuartzConfig.java
package my.springboot.mybatis.common; import my.springboot.mybatis.controller.QuartzJobTest; import my.springboot.mybatis.controller.TaskTest; import org.quartz.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class QuartzConfig { @Bean public JobDetail testJobDetail() { JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class) .usingJobData("type","Trigger") .usingJobData("userName", "小明") //设置参数(键值对) .storeDurably() .build(); return jobDetail; } /** * 定时任务1: * Trigger触发器使用 */ @Bean public Trigger testJobTrigger() { //每隔5秒执行一次 CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/15 * * * * ?"); //创建触发器 Trigger trigger = TriggerBuilder.newTrigger() .forJob(testJobDetail())//关联上述的JobDetail .withSchedule(cronScheduleBuilder) .build(); return trigger; } @Bean public JobDetail testSampleJobDetail() { JobDetail jobDetail= JobBuilder.newJob(QuartzJobTest.class) .usingJobData("type","SimpleTrigger") .usingJobData("userName", "小王") .storeDurably() .build(); return jobDetail; } /** * 定时任务2: * Simple触发器使用 * */ @Bean public SimpleTrigger testSimpleTrigger(){ SimpleScheduleBuilder ssb = SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10).repeatForever(); SimpleTrigger sTrigger = TriggerBuilder.newTrigger() .forJob(testSampleJobDetail())// .withSchedule(ssb).build(); return sTrigger; } }
本文转载自微信公众号「IT技术分享社区」,可以通过以下二维码关注。转载本文请联系IT技术分享社区公众号。IT技术网

个人博客网站:https://programmerblog.xyz