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

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

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

有关定时任务的使用

<!--引入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();
    }
}


相关文章
|
机器学习/深度学习 自然语言处理
大语言模型(LLM)框架及微调 (Fine Tuning)
大语言模型(LLM)框架及微调 (Fine Tuning)
981 0
|
前端开发 Java
SpringBoot下载xlsx模板,导出excel数据
SpringBoot下载xlsx模板,导出excel数据
998 0
|
8月前
|
人工智能 运维 Anolis
|
前端开发 JavaScript Java
Spring Boot中的数据校验
Spring Boot中的数据校验
|
存储 NoSQL Java
Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
【10月更文挑战第29天】Java调度任务如何使用分布式锁保证相同任务在一个周期里只执行一次?
409 1
|
jenkins Java 持续交付
Docker搭建jenkins环境
这篇文章详细介绍了如何利用Docker搭建Jenkins环境,包括拉取Jenkins镜像、配置端口映射及初始化设置的步骤。
564 0
Docker搭建jenkins环境
|
安全 开发工具 C++
Atom编辑器:曾经的效率提升利器,终将被新技术取代
Atom编辑器:曾经的效率提升利器,终将被新技术取代
445 0
HttpURLConnection中请求头中携带Token的使用方法
HttpURLConnection中请求头中携带Token的使用方法
773 2
|
安全 API 数据处理
Android 15革命来袭:64位时代的大门轰然开启,开发者和用户将何去何从?
【8月更文挑战第20天】随着性能提升,Android 15的重大更新引领64位时代,提供更大内存支持、更快执行速度及增强安全性。新版本淘汰32位应用,优化系统库,并改善内存管理。开发者需适应64位开发,面对应用体积增大等挑战,同时享受更高效能。此转变标志着移动应用开发步入新阶段,为用户带来更流畅安全的体验。
960 0
|
算法 安全 Java
浅析五种最常用的Java加密算法,以后可以直接拿来用了
信息加密是现在几乎所有项目都需要用到的技术,身份认证、单点登陆、信息通讯、支付交易等场景中经常会需要用到加密算法,所谓加密算法,就是将原本的明文通过一系列算法操作变成密文。接下来就介绍一下目前比较常用的一些加密算法,本期不涉及算法底层,以应用介绍和代码展示为主。 如果只想了解原理,可跳过代码部分,代码可直接拿来使用。
3109 0