温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何配置Spring定时任务

发布时间:2020-11-24 16:29:53 来源:亿速云 阅读:129 作者:Leah 栏目:编程语言

今天就跟大家聊聊有关如何配置Spring定时任务,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

第一步,要知道Spring这个架构,很有趣很有意思。可以做到自由插拔功能模块的效果。工程项目是基于MAVEN包依赖管理的,所以把这次需要的依赖包引用列出来:

<!-- 定时器依赖 开始 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>

 

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<!-- 定时器依赖 结束 -->

当然,这是要跟对应的Spring的版本是要匹配的。我们这里的工程是4.0.2。前一个包spring-context-support,主要的作用是作为Spring与quartz的沟通管理的部件,如果注释掉就会报这样的错误

如何配置Spring定时任务

 在MAVEN配置完所需要添加的包之后(其他的包,这里暂时不扩展开说了,本文只讨论在完整Spring工程项目下的配置),我们就可以开始动手给这个项目添加,定时任务的功能模块了。

第二步,从web的项目的起源,web.xml 中改动做起。由于原本的项目Spring的配置文件是Spring-mvc.xml,我这里就把定时任务的配置文件改成了spring-time.xml。这样就可以通过同一个扫描的配置在启动的时候去读取了。具体的代码如下:

 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-*.xml</param-value>
  </context-param>

然后给大家看一下我的工程结构:

如何配置Spring定时任务

通过这样的配置,项目就会知道怎么去调用了。实现了这一步接下来我们就可以继续往下走了;

第三步,就是要完成spring-timer.xml这个定时任务的核心配置了。在这个文件配置中,我们主要是完成三件事情:

  1.配置启动的设置,关于懒加载(简单说一下,比如把某个变量初始化为null,也是一种懒加载,即在服务启动之后,只有在实际被调用的时候才会实例化,否则是不会在内存中存在的,只是逻辑上的。可以省空间,但是也可能会导致,问题延迟很久才会被发现,此处不再详细解说),以及触发器的配置;

  2.quartz-2.x的配置,包含定时任务触发之后要调用的job的名字,以及corn表达式(即定时表达式,控制程序在何时重复执行的原因,本次在会在后续补充关于cron表达式的内容);

  3.配置job的内容和job对应的具体的类。

好了逻辑流程解说完毕,上代码:

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
<beans xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:p="http://www.springframework.org/schema/p" 
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
 
    <!-- 启动触发器的配置开始 --> 
  <bean name="startQuertz" lazy-init="false" autowire="no" 
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
      <list> 
        <ref bean="myJobTrigger" /> 
      </list> 
    </property> 
  </bean> 
  <!-- 启动触发器的配置结束 --> 
 
  <!-- 调度的配置开始 --> 
  <!-- 
    quartz-1.8以前的配置  
  <bean id="myJobTrigger" 
    class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail"> 
      <ref bean="myJobDetail" /> 
    </property> 
    <property name="cronExpression"> 
      <value>0/1 * * * * &#63;</value> 
    </property> 
  </bean> 
  --> 
  <!-- quartz-2.x的配置 --> 
  <bean id="myJobTrigger" 
    class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> 
    <property name="jobDetail"> 
      <ref bean="myJobDetail" /> 
    </property> 
    <property name="cronExpression"> 
    
    <value>0/10 * * * * &#63;</value>
     <!--  <value>1 52 * * * &#63;</value> --> 
    </property> 
  </bean> 
  <!-- 调度的配置结束 --> 
 
  <!-- job的配置开始 --> 
  <bean id="myJobDetail" 
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="targetObject"> 
      <ref bean="myJob" /> 
    </property> 
    <property name="targetMethod"> 
      <value>work</value> 
    </property> 
  </bean> 
  <!-- job的配置结束 --> 
 
  <!-- 工作的bean --> 
  <bean id="myJob" class="com.tec.kevin.quartz.jobTest" /> 
 
</beans>

完成这里的配置文件配置之后,就可以开始下一步,具体的业务逻辑实现了;

第四步,具体业务逻辑实现。

这里要注意的是下图中的两个点

如何配置Spring定时任务

上图是具体的业务实现的类,里面的名字和下图定时任务配置的要相同。

完成上述之后,我们可以启动项目看看实际效果了。

如何配置Spring定时任务

这里可以看到,定时任务按照我们之前在配置中的 <value>0/10 * * * * &#63;</value> 每10秒执行一次 来运行了。

如何配置Spring定时任务

看完上述内容,你们对如何配置Spring定时任务有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI