使用定时任务 随着项目启动定时执行

简介: 使用定时任务 随着项目启动定时执行

使用定时任务 随着项目启动定时执行

有关定时任务的使用

<!--引入quartz定时框架-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>

1、 spring中使用两个注解 实现定时任务的实现

(1)在启动类开启定时任务@EnableScheduling

@SpringBootApplication
//开启定时任务
@EnableScheduling
public class Application{
    public static void main(String[] args) {
          SpringApplication.run(Application.class, args);
    }
}
(2)@Scheduled(cron = " ")来指定自动执行规则
    /**
     * 每分钟执行一次
     */
    @Scheduled(cron = "0 0/1 * * * ?")
    public void init() {
        log.info("定时任务执行开始");
       //业务方法逻辑...
        log.info("定时任务执行结束");
    }

(2)有关quartz实现定时任务

public class MyJob implements Job {
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(new Date());
        System.out.println("当前时间-format:time="+format);
    }
}
public class MyScheduler {
    public static void getMyScheduler() throws SchedulerException {
        //创建schedule  调度器
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        //创建jobbuilder
        JobDetail jobDetail = (JobDetail) JobBuilder.newJob(MyJob.class)
                .withIdentity("nala","jobDetailGroup")
                .withDescription("使用Cron")
                .build();
        //创建TriggerBuilder  触发器  设置触发时间 3天一次
        CronTrigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("nala", "tiggerGroup")
                .withDescription("使用cron设置调度时间")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 0 */3 * ? "))
                .build();
        //关联
        scheduler.scheduleJob(jobDetail,trigger);
        if(!scheduler.isShutdown()){
            scheduler.start();
        }
        //执行
        scheduler.start();
        //一直不关闭schedule 就会一直运行
        while (true){
        }
    }
    @Test
    public  void test() throws SchedulerException {
        getMyScheduler();
    }
}

(3) Spring Boot集成Quartz实现定时任务

//创建自定义job
public class MyJob extends QuartzJobBean {
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(new Date());
        System.out.println("jobExecutionContext"+format);
    }
}
/**
 * @Date 2021/10/22 14:36
 */
@Configuration
@DisallowConcurrentExecution
public class QuartzConfig {
    @Bean
    public JobDetail getJobDetail() {
        return JobBuilder.newJob(MyJob.class)
                .withIdentity("jobDetail","jobDetailGroup")
                .withDescription("使用cron")
                .storeDurably()
                .build();
    }
    @Bean
    public Trigger getTrigger() {
        //cron方式,每隔3天执行一次
        return TriggerBuilder.newTrigger().forJob(getJobDetail())
                .withIdentity("trigger","triggerGroup")
                .withDescription("使用Cron表达式")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 0 */3 * ?"))
                .build();
    }
}


相关文章
|
7月前
|
Java 调度 Spring
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
663 0
|
8天前
|
运维 Ubuntu Linux
定时任务管理详解:cron与at的配置与使用
定时任务管理详解:cron与at的配置与使用
53 2
|
2月前
|
缓存 Java UED
仅执行一次的定时任务如何设置?
【10月更文挑战第12天】仅执行一次的定时任务如何设置?
96 1
|
5月前
|
监控 Java 调度
若依修改定时任务,定时任务在系统监控的定时任务当中,宕机情况都不会去管,涉及到定时任务
若依修改定时任务,定时任务在系统监控的定时任务当中,宕机情况都不会去管,涉及到定时任务
|
7月前
|
存储
为什么有的定时任务不显示
【5月更文挑战第15天】为什么有的定时任务不显示
98 3
|
Linux 数据库
定时任务
定时任务
153 0
|
负载均衡 Java 数据挖掘
定时任务实现的几种方式
定时任务实现的几种方式
288 1
|
Java Linux
如何编写一个自动关闭某个进程的脚本,并使用cron定时执行?
如何编写一个自动关闭某个进程的脚本,并使用cron定时执行?
308 0
crontab安装以及定时任务的执行
crontab安装以及定时任务的执行
140 0
|
开发者 微服务
项目中整合定时任务 | 学习笔记
快速学习 项目中整合定时任务
125 0