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);
  }
}

总结

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

相关文章

  • Java中支持可变参数详解

    Java中支持可变参数详解

    那个可变参数的就是个数组,你传多少个参数都被放到那个数组里面。这样方便了程序员,因为如果不确定要传的参数的个数的话,我们要写带1个参数的,带2个参数,带3个参数的,这样很麻烦。 该进后的这个方法,我们只要写一个函数就好,可以传任意个参数。
    2015-05-05
  • java实现文件的上传功能

    java实现文件的上传功能

    这篇文章主要为大家详细介绍了java实现文件的上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Mybatis是这样防止sql注入的

    Mybatis是这样防止sql注入的

    本文详细讲解了Mybatis是如何防止sql注入的,对大家的学习或工作具有一定的参考借鉴价值。需要的朋友可以收藏下,方便下次浏览观看
    2021-12-12
  • java编写贪吃蛇小游戏

    java编写贪吃蛇小游戏

    贪吃蛇是经典手机游戏,既简单又耐玩。通过控制蛇头方向吃蛋,使得蛇变长,从而获得积分。今天我们就来用java来实现下贪吃蛇小游戏,有需要的小伙伴可以参考下
    2015-03-03
  • java &与&&的区别及实例

    java &与&&的区别及实例

    这篇文章主要介绍了java &与&&的区别的相关资料,并附简单实例,帮助大家学习理解这部分知识,需要的朋友可以参考下
    2016-10-10
  • Java stream流中peek用法简单示例

    Java stream流中peek用法简单示例

    这篇文章主要给大家介绍了关于Java stream流中peek用法的相关资料,Java Stream中的peek()方法也是用于查看每个元素,但不改变流的操作的方法,文中通过代码介绍的需要的朋友可以参考下
    2023-12-12
  • springboot使用RedisRepository操作数据的实现

    springboot使用RedisRepository操作数据的实现

    本文主要介绍了springboot使用RedisRepository操作数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • JFreeChart简单实现光滑曲线绘制

    JFreeChart简单实现光滑曲线绘制

    这篇文章主要为大家详细介绍了JFreeChart简单实现光滑曲线的绘制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Java 对称加密几种算法分别实现

    Java 对称加密几种算法分别实现

    这篇文章主要介绍了Java 对称加密使用DES / 3DES / AES 这三种算法分别实现的相关资料,这里提供了实例代码,需要的朋友可以参考下
    2017-01-01
  • Spring boot 使用QQ邮箱进行一个验证登入功能

    Spring boot 使用QQ邮箱进行一个验证登入功能

    这篇文章主要介绍了Spring boot 使用QQ邮箱进行一个验证登入,主要包括qq邮箱开启权限和创建发送验证码的请求Controller,本文通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-10-10

最新评论