Java Spring分别实现定时任务方法

Java Spring 是一个开源的全栈轻量级应用框架,可以通过 Spring 框架实现定时任务即在指定时间轮询执行某个任务或在固定时间执行某个任务。下面详细介绍一下 Java Spring 分别实现定时任务的方法:

1. Spring Schedule 注解方式

这种方法主要使用在方法上添加注解,从而使得方法在特定的时间点或者时间间隔执行。

在Spring项目中需要配置@EnableScheduling注解后才能使用。通常是一个被@ComponentScan注解的配置类。

示例1:

@Component
public class ScheduleTask {

    @Scheduled(cron = "0 * * * * ?") // 每分钟执行一次
    public void minuteJob() {
        System.out.println("每分钟定时任务执行");
    }
}

示例2:

@Slf4j
@Component
public class ScheduleTask {

    /**
     * 固定间隔任务
     */
    @Scheduled(fixedRate = 5000)
    public void fixedRateJob() {
        log.info("固定间隔任务执行");
    }

    /**
     * 固定延迟任务
     */
    @Scheduled(fixedDelay = 5000)
    public void fixedDelayJob() {
        log.info("固定延迟任务执行");
    }
}

2. Spring Quartz 组合方式

Quartz 是一个高级任务调度框架,它与 Spring 集成后,提供了一个基于 XML 的配置文件,可以无缝的 与Spring进行整合。

下面是实现步骤:

  1. 引入相关依赖,具体可以参考 Maven 依赖中心。其中,org.quartz-scheduler 为 Quartz 核心依赖,org.springframework:spring-context-support 为 Spring 扩展支持包,其它依赖都为为 Spring 集成 Quartz 所需的依赖。

  2. 在配置文件中,插入 quartz 配置元素 scheduler,并配置 Quartz 自带的 SimpleTrigger 简单触发器相关属性。

  3. 初始化时启动任务定时器。

示例:

@Configuration
public class QuartzJobConfig {

    private static final int MINUTE = 60; // 单位秒
    private static final int INTERVAL = 3 * MINUTE; // 间隔时间为3分钟

    /**
     * 配置 Task 任务,并注册到bean中,交由 Spring 容器管理
     */
    @Bean
    public JobDetail taskJobDetail() {
        return JobBuilder.newJob(TaskJob.class)
                .withIdentity("taskJob", "taskJobGroup")
                .storeDurably().build();
    }

    /**
     * 触发器 Trigger,定时任务(2)的触发条件设置
     */
    @Bean
    public Trigger taskTrigger() {
        SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
                .withIntervalInSeconds(INTERVAL) // 间隔时间
                .repeatForever();
        return TriggerBuilder.newTrigger()
                .forJob(taskJobDetail())
                .withIdentity("taskTrigger", "taskTriggerGroup")
                .withSchedule(scheduleBuilder)
                .build();
    }

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        schedulerFactoryBean.setJobDetails(taskJobDetail());
        schedulerFactoryBean.setTriggers(taskTrigger());
        return schedulerFactoryBean;
    }
}

以上便是 Java Spring 分别实现定时任务的方法。通过选择不同的方式,可以根据实际场景需求快速实现定时任务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Spring分别实现定时任务方法 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • Java 数据库连接池 Tomcat介绍

    下面开始对“Java 数据库连接池 Tomcat介绍”的攻略进行详细讲解。 一、什么是数据库连接池 在应用中,每次向数据库请求都会建立一个与数据库的连接。但是频繁地打开和关闭连接会给数据库服务器带来额外的负荷,造成系统性能下降。而使用连接池技术,可以在应用启动时就预先创建一组数据库连接,放入连接池中。当需要使用数据库连接时,就从连接池中取出一个连接,使用完后…

    Java 2023年6月2日
    00
  • 已解决:No ‘Access-Control-Allow-Origin’跨域问题

    下面我将详细讲解如何解决 “No ‘Access-Control-Allow-Origin’跨域问题”的完整攻略。 什么是跨域问题? 在浏览器端,当一个网页的代码试图在与当前网页不同的域名、协议、端口上请求数据时,就会引发浏览器的跨域安全机制。比如,网站A在浏览器端试图请求网站B的数据,由于不同源,就会被浏览器拦截。 如何解决跨域问题? 在解决跨域问题时,我…

    Java 2023年6月2日
    00
  • springboot集成mybatisplus实例详解

    关于“springboot集成mybatisplus实例详解”的攻略,首先我们需要明确一个事实——mybatisplus 是基于mybatis进行改进的一种ORM(对象关系映射)框架,它能够有效地提高我们开发项目的效率与代码的可维护性。 一、相关依赖引入 首先,我们需要在 pom.xml 文件中添加以下依赖: <!– mybatis-plus的核心依…

    Java 2023年5月19日
    00
  • SpringBoot定制化Starter实现方法

    让我详细讲解SpringBoot定制化Starter实现方法的完整攻略。 什么是 SpringBoot Starter SpringBoot Starter 是一个提供很多开箱即用功能的集成包(或者说是依赖包)。通常情况下,我们只需要引入这个 Starter,配置一下参数即可,相关的依赖和配置都已经自动完成了。 SpringBoot Starter 的作用 …

    Java 2023年5月19日
    00
  • Java之对象销毁和finalize方法的使用

    Java之对象销毁和finalize方法的使用 对象销毁 在Java中,对象销毁是由Java虚拟机自动完成的,程序员不需要关心对象何时被销毁。当一个对象没有任何引用时,Java虚拟机会自动回收这个对象所占的空间。 finalize方法 Java中的finalize方法是由垃圾回收器在回收对象之前调用的方法,它是Object类中的一个方法,子类可以重写这个方法…

    Java 2023年5月26日
    00
  • maven如何在tomcat8中实现自动部署

    Maven是一个功能强大的构建工具,它可以帮助我们构建、打包、测试和部署Java应用程序。在实际开发过程中,我们通常会使用Tomcat作为Java Web应用程序的容器,而自动部署则可以帮助我们快速、方便地部署应用程序,提高开发效率。下面是maven如何在tomcat8中实现自动部署的完整攻略。 1. 配置Tomcat的manager虚拟主机 要实现自动部署…

    Java 2023年5月19日
    00
  • java简单快速排序实例解析

    Java简单快速排序实例解析 快速排序是一种常用的排序算法,其本质是通过不断地把数列分成两个部分,分别进行递归排序,最终完成整个数列的排序。 实现思路 快速排序的实现思路如下: 选择一个基准元素,在数列中选择一个数作为基准元素pivot,一般选择第一个或者最后一个元素; 分割数组,将数列中所有小于基准元素的数放在它的左侧,所有大于基准元素的数放在它的右侧; …

    Java 2023年5月19日
    00
  • 在IDEA中安装scala、maven、hadoop遇到的问题小结

    下面是详细讲解“在IDEA中安装Scala、Maven、Hadoop遇到的问题小结”的完整攻略: 安装Scala 下载安装包 首先,需要下载Scala的安装包,可以从官网 https://www.scala-lang.org/download/ 选择合适的版本进行下载。 解压并配置环境变量 下载完成后,将压缩包解压到指定目录(例如在Windows系统中解压到…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部