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日

相关文章

  • SpringBoot中事半功倍的工具类合集分享

    对于“SpringBoot中事半功倍的工具类合集分享”的完整攻略,我将按照以下结构进行讲解: 介绍SpringBoot中常用的工具类 数据库操作工具类的使用 Http请求工具类的使用 示例1:使用数据库工具类进行增删改查操作 示例2:使用Http请求工具类进行数据爬取 总结 接下来,让我们一步步来看每一部分的具体内容。 1. 介绍SpringBoot中常用的…

    Java 2023年5月15日
    00
  • Eclipse插件大全 挑选最牛的TOP30(全)

    为了让大家更好地学习和使用Eclipse,我写了一篇关于“Eclipse插件大全 挑选最牛的TOP30(全)”的攻略。以下是详细的内容: 1. 什么是Eclipse? Eclipse是一个领先的开发工具,支持多种编程语言和开发平台。它是一个开放源代码的IDE(Integrated Development Environment),拥有丰富的插件和扩展,可以满…

    Java 2023年5月19日
    00
  • Java基于TCP方式的二进制文件传输

    针对“Java基于TCP方式的二进制文件传输”的完整攻略,我将从以下几个方面进行详细的讲解: Java TCP编程简介; 文件读取与传输; Java TCP方式二进制文件传输的实现。 1. Java TCP编程简介 TCP/IP是Internet上最常用的协议,在Java中,我们可以使用Socket和ServerSocket实现TCP编程。其中,Socket…

    Java 2023年5月20日
    00
  • 带你重新认识MyBatis的foreach

    好的。MyBatis是一款非常流行的ORM框架,而foreach标签是MyBatis中比较常用的一个标签,可以方便地在SQL中进行集合参数的遍历操作。 以下是带你重新认识MyBatis的foreach的完整攻略: 1. 简介 foreach标签用于循环遍历集合参数中的元素,并将每个元素作为SQL查询的参数传递进去。它可以用在SELECT、INSERT、UPD…

    Java 2023年5月20日
    00
  • Spring session 获取当前账户登录数的实例代码

    Spring Session 是 Spring 提供的用于在分布式系统中管理用户会话信息的解决方案。通过使用 Spring Session,我们可以将用户的会话信息存储在外部存储中,实现会话状态在多个应用之间的共享,从而解决多个应用之间无法共享会话状态的问题。 在 Spring Session 中,我们可以使用 SessionRegistry 接口来获取当前…

    Java 2023年6月16日
    00
  • Java util concurrent及基本线程原理简介

    Java util concurrent及基本线程原理简介 线程基本概念 线程是操作系统进行任务调度和执行的基本单位,一个进程可以拥有多个线程。 线程是轻量级的,相对于进程来说占用较少的资源。 线程也是并发编程的基石,不同的线程可以同时执行不同的任务,提高了应用程序的并发性。 线程的状态 新建状态 线程是尚未启动的状态,实例化了一个Thread对象,还未调用…

    Java 2023年5月18日
    00
  • 用JSP编写文件上传

    以下是使用JSP编写文件上传的完整攻略。 1. HTML表单 首先,我们需要在HTML文件中创建一个表单控件,让用户选择需要上传的文件并提交表单。代码如下: <form action="upload.jsp" method="post" enctype="multipart/form-data&quot…

    Java 2023年6月15日
    00
  • MyBatis 与 Spring 的完美整合方法

    下面是MyBatis和Spring整合的完整攻略及示例。 一. 整合原理 MyBatis是一个独立的持久层框架,其对Spring并不依赖。然而在实际的开发中,我们常常需要将MyBatis与Spring整合在一起使用。 整合的方式一般有两种: 将MyBatis工厂交由Spring管理。这样做的好处是Spring可以管理MyBatis的生命周期,保证MyBati…

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