Spring中的@EnableScheduling定时任务注解

 更新时间:2024年01月25日 09:59:29   作者:羱滒  
这篇文章主要介绍了Spring中的@EnableScheduling注解,@EnableScheduling是 Spring Framework 提供的一个注解,用于启用 Spring 的定时任务功能,通过使用这个注解,可以在 Spring 应用程序中创建定时任务,需要的朋友可以参考下

@EnableScheduling

@EnableScheduling是 Spring Framework 提供的一个注解,用于启用 Spring 的定时任务(Scheduling)功能。

通过使用这个注解,可以在 Spring 应用程序中创建定时任务,使得指定的方法可以按照设定的时间间隔或固定的时间点自动执行。

使用定时任务可以实现周期性地执行一些任务,比如数据清理、报表生成、数据同步等等。

以下是一个简单的示例,展示了如何在 Spring Boot 项目中使用 @EnableScheduling 注解来开启定时任务功能:

使用

在 Spring Boot 项目的入口类上使用 @EnableScheduling 注解:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling  // 启用定时任务功能
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

创建一个定时任务方法,通过 @Scheduled 注解来指定执行的时间间隔或时间点:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class MyScheduledTasks {
    @Scheduled(fixedRate = 5000)  // 每隔5秒执行一次
    public void performTask() {
        // 执行定时任务的逻辑
        System.out.println("定时任务执行中...");
    }
}

在上面的示例中,我们在 MyScheduledTasks 类中创建了一个定时任务方法 performTask(),通过 @Scheduled 注解指定了该方法的执行时间间隔为每隔5秒执行一次。

总之,通过在 Spring Boot 项目中使用 @EnableScheduling 注解,可以启用定时任务功能,然后通过 @Scheduled 注解来标记需要定时执行的方法。这些方法会被 Spring 自动调度并按照设定的时间规则执行。

定时任务列表 添加、删除,执行的 实现

实现定时任务列表的添加、删除和执行: 动态添加和删除定时任务,可以借助额外的库,如 Quartz 或者自定义定时任务管理类。 执行定时任务: 定时任务将会由 Spring 定时执行,无需手动触发。 以下是一个使用 Quartz 实现动态添加、删除和执行定时任务的简单示例:

import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
@Configuration
@EnableScheduling
public class QuartzConfig {
    @Autowired
    private Scheduler scheduler;
    @Bean
    public JobDetail sampleJobDetail() {
        return JobBuilder.newJob(SampleJob.class)
                .withIdentity("sampleJob")
                .storeDurably()
                .build();
    }
    @Scheduled(fixedRate = 5000)  // 每隔5秒添加一个定时任务
    public void addSampleJob() throws SchedulerException {
        JobDetail jobDetail = sampleJobDetail();
        Trigger trigger = TriggerBuilder.newTrigger()
                .forJob(jobDetail)
                .withIdentity(jobDetail.getKey().getName())
                .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?"))  // 每10秒执行一次
                .build();
        scheduler.scheduleJob(jobDetail, trigger);
    }
    // 可以添加删除定时任务的方法
}

上述代码中,使用 Quartz 库来实现动态添加和删除定时任务。addSampleJob() 方法会每隔5秒添加一个新的定时任务,该任务会每隔10秒执行一次。

可以根据需求扩展添加、删除和执行定时任务的逻辑。

需要注意的是,上述示例只是一个简单的使用 Quartz 实现的动态定时任务的示例,实际应用中需要考虑更多的细节和异常处理。

到此这篇关于Spring中的@EnableScheduling定时任务注解的文章就介绍到这了,更多相关@EnableScheduling注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring-retry组件的使用教程

    spring-retry组件的使用教程

    Spring Retry的主要目的是为了提高系统的可靠性和容错性,当方法调用失败时,Spring Retry可以在不影响系统性能的情况下,自动进行重试,从而减少故障对系统的影响,这篇文章主要介绍了spring-retry组件的使用,需要的朋友可以参考下
    2023-06-06
  • 分享我的第一次java Selenium自动化测试框架开发过程

    分享我的第一次java Selenium自动化测试框架开发过程

    这篇文章主要介绍了分享我的第一次java Selenium自动化测试框架开发过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 通过volatile验证线程之间的可见性

    通过volatile验证线程之间的可见性

    这篇文章主要介绍了通过volatile验证线程之间的可见性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java如何实现获取客户端ip地址的示例代码

    java如何实现获取客户端ip地址的示例代码

    本文主要介绍了java如何实现获取客户端ip地址,主要包括java获取客户端ip地址工具类使用实例、应用技巧,文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Java数据结构之链表相关知识总结

    Java数据结构之链表相关知识总结

    今天给大家带来关于Java数据结构的相关知识,文章围绕Java链表展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • java并发编程专题(六)----浅析(JUC)Semaphore

    java并发编程专题(六)----浅析(JUC)Semaphore

    这篇文章主要介绍了java JUC)Semaphore的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Elasticsearch索引结构与算法解析

    Elasticsearch索引结构与算法解析

    ​作为搜索引擎的一部分,ES自然具有速度快、结果准确、结果丰富等特点,那么ES是如何达到“搜索引擎”级别的查询效率呢?首先是索引,其次是压缩算法,接下来我们就一起了解下ES的索引结构和压缩算法
    2023-04-04
  • Java文件(io)编程_文件字节流的使用方法

    Java文件(io)编程_文件字节流的使用方法

    下面小编就为大家带来一篇Java文件(io)编程_文件字节流的使用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 基于Spring的Maven项目实现发送邮件功能的示例

    基于Spring的Maven项目实现发送邮件功能的示例

    这篇文章主要介绍了基于Spring的Maven项目实现发送邮件功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 关于Springboot打成JAR包后读取外部配置文件的问题

    关于Springboot打成JAR包后读取外部配置文件的问题

    这篇文章主要介绍了关于Springboot打成JAR包后读取外部配置文件的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11

最新评论