spring配置定时任务的几种方式总结

 更新时间:2023年12月22日 10:35:38   作者:蚂蚁style  
这篇文章主要介绍了spring配置定时任务的几种方式总结,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

网上看到好多关于定时任务的讲解,以前只简单使用过注解方式,今天项目中看到基于配置的方式实现定时任务,自己做个总结,作为备忘录吧。

基于注解方式的定时任务

首先spring-mvc.xml的配置文件中添加约束文件

xmlns:task="http://www.springframework.org/schema/task" 
http://www.springframework.org/schema/task  
http://www.springframework.org/schema/task/spring-task-3.2.xsd 

其次需要配置注解驱动

<task:annotation-driven />

添加你添加注解的扫描包

<context:component-scan base-package="com.xxx.xxx" />

最后贴上定时任务包代码

package com.xxx.xxx;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class xxxTask {
    @Scheduled(cron = "0/5 * * * * ? ") // 间隔5秒执行
    public void xxx() {
        System.out.println("----定时任务开始执行-----");
    //执行具体业务逻辑----------  
        System.out.println("----定时任务执行结束-----");
    }
}

基于配置的定时任务调度框架Quartz

引入依赖

<dependency>
  <groupId>org.quartz-scheduler</groupId>
  <artifactId>quartz</artifactId>
  <version>2.2.3</version>
</dependency>

定义一个类,方法可以写多个为需要定时执行的任务

public class AdminJob {
    
    public void job1() {
        System.out.pringln("执行了任务---");
    }
}

在spring.xml配置中添加

<bean id="adminJob" class="com.xxx.xxx.AdminJob"/>
    <!--此处id值为需要执行的定时任务方法名-->
    <bean id="job1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="adminJob"/>
        <property name="targetMethod" value="job1"/>
    </bean>
<!--此处为定时任务触发器-->
    <bean id="job1Trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail">
            <ref bean="job1"/>
        </property>
        <property name="cronExpression">
            <value>0 15 0 16 * ?</value>
        </property>
    </bean>
<bean id="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="job1Trigger"/>
        </list>
    </property>
    <property name="taskExecutor" ref="executor"/>
</bean>
    <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize" value="10"/>
        <property name="maxPoolSize" value="100"/>
        <property name="queueCapacity" value="500"/>
    </bean>

最后还有一种普通java的定时任务代码

基于线程池的方式实现定时任务

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Task3 {
  public static void main(String[] args) {
    Runnable runnable = new Runnable() {
      public void run() {
        // task to run goes here
        System.out.println("Hello !!");
      }
    };
    ScheduledExecutorService service = Executors
                    .newSingleThreadScheduledExecutor();
    service.scheduleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);
  }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Spring Security集成手机验证码登录功能实现

    使用Spring Security集成手机验证码登录功能实现

    本文详细介绍了如何利用SpringSecurity来实现手机验证码的注册和登录功能,在登录过程中,同样需通过验证码进行验证,文章还提供了相关的代码实现
    2024-10-10
  • java面向对象之人机猜拳小游戏

    java面向对象之人机猜拳小游戏

    这篇文章主要为大家详细介绍了java面向对象之人机猜拳小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • Spring 零基础入门WebFlux框架体系

    Spring 零基础入门WebFlux框架体系

    Spring5发布有两年了,随Spring5一起发布了一个和Spring WebMvc同级的Spring WebFlux。这是一个支持反应式编程模型的新框架体系。反应式模型区别于传统的MVC最大的不同是异步的、事件驱动的、非阻塞的,这使得应用程序的并发性能会大大提高,单位时间能够处理更多的请求
    2022-07-07
  • Spring+MongoDB实现登录注册功能

    Spring+MongoDB实现登录注册功能

    这篇文章主要为大家详细介绍了Spring+MongoDB实现登录注册功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Java判断字节流是否是 UTF8编码方法示例

    Java判断字节流是否是 UTF8编码方法示例

    这篇文章主要我大家介绍了Java判断字节流是否是 UTF8编码方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • JVM中对象的创建与OOP-Klass模型

    JVM中对象的创建与OOP-Klass模型

    这篇文章主要介绍了JVM中对象的创建与OOP-Klass模型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • springboot 多环境配置 yml文件版的实现方法

    springboot 多环境配置 yml文件版的实现方法

    这篇文章主要介绍了springboot 多环境配置 yml文件版的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 浅析Java设计模式编程中的单例模式和简单工厂模式

    浅析Java设计模式编程中的单例模式和简单工厂模式

    这篇文章主要介绍了浅析Java设计模式编程中的单例模式和简单工厂模式,使用设计模式编写代码有利于团队协作时程序的维护,需要的朋友可以参考下
    2016-01-01
  • DTD验证xml格式的三种方式详解

    DTD验证xml格式的三种方式详解

    这篇文章主要介绍了DTD验证xml格式的三种方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • SpringBoot自动配置@EnableAutoConfiguration过程示例

    SpringBoot自动配置@EnableAutoConfiguration过程示例

    这篇文章主要为大家介绍了SpringBoot自动配置@EnableAutoConfiguration的过程示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10

最新评论