spring @scheduled动态配置,spring schedule详解

  spring @scheduled动态配置,spring schedule详解

  00-1010前言一、Spring @Scheduled Annotation1.2如何启用@Scheduled Annotation 1.3使用@Scheduled Annotation II、固定延迟和频率使用@Scheduled III、使用@Scheduled IV搭配cron表达式、使用属性文件配置Cron V、使用上下文配置Cron Summary

  

目录

Spring基于用@Scheduled注释的cron表达式,为任务调度和异步方法执行提供了出色的支持。您可以将@Scheduled注释和触发器元数据一起添加到方法中。在本文中,我将展示如何以4种不同的方式使用@Scheduled函数。

 

  

前言

@ scheduled注释用于任务调度。该注释需要提供触发信息。

 

  您可以使用属性fixedDelay/fixedRate/cron来提供触发器信息。

  FixedRate让Spring定期运行任务,即使最后一个调用还在运行。fixedDelay专门控制上一次执行结束时的下一次执行时间。Cron是从Unix cron实用程序派生出来的一个特性,根据您的需要有各种选项。示例用法如下:

  @ Scheduled Usages @ Scheduled(fixed delay=30000)public void demoServiceMethod(){.} @ Scheduled(fixed rate=30000)public void demoServiceMethod(){.} @ Scheduled(cron= 0 0 * * * * public void demoServiceMethod(){.}

  00-1010要在spring应用程序中使用@Scheduled,必须首先在applicationConfig.xml文件中定义xml名称空间和模式位置定义。还添加了任务:的注释驱动程序,以支持基于注释的任务调度。

  application config . XML xmlns : task= http://www . spring framework . org/Schema/task http://www . spring framework . org/Schema/task/http://www . spring framework . org/Schema/task/spring-task-3.0 . xsd task 3360批注驱动上述添加是必要的,因为我们将使用基于批注的配置。

  00-1010下一步是创建一个类和类中的一个方法,如下所示:

  demo service . Java public class demo service { @ Scheduled(cron= */5 * * * *?)public void demoServiceMethod(){ system . out . println(每5秒执行一次的方法。当前时间是: 新日期());}}在上面的例子中

  使用@Scheduled注释将使Spring容器理解下面的方法将作为作业运行。记住,带有@Scheduled注释的方法不应该有参数传递给它们。它们也不应该返回任何值。如果希望在@Scheduled方法中使用外部对象,应该使用自动连接将它们注入到DemoService类中,而不是将它们作为参数传递给@Scheduled方法。

  00-1010在此方法中,fixedDelay属性与@Scheduled注释一起使用。

  示例:

  demoservicebasicusagefixeddelay . Java package com . howtodoinjava . service;导入Java . util . date;导入org . spring framework . scheduling . annotation . scheduled;公共类DemoServiceBasicUsageFixedDelay { nbsp;@ Scheduled(fixed delay=5000)nbsp;//@Scheduled(固定速率

  = 5000) //Or use this  public void demoServiceMethod() {    System.out.println("Method executed at every 5 seconds. Current time is :: "+ new Date()); }}复制代码应用程序配置如下:

  

applicationContext.xml< ?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context/ http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util/ http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/task/ http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <task:annotation-driven /> <bean id="demoServiceBasicUsageFixedDelay" class="com.howtodoinjava.service.DemoServiceBasicUsageFixedDelay"></bean></beans>

 

  

三、配合cron表达式使用@Scheduled

在此方法中,cron 属性与@Scheduled 注释一起使用。

 

  举例:

  

DemoServiceBasicUsageCron.javapackage com.howtodoinjava.service;import java.util.Date;import org.springframework.scheduling.annotation.Scheduled;public class DemoServiceBasicUsageCron{ @Scheduled(cron="*/5 * * * * ?") public void demoServiceMethod() { System.out.println("Method executed at every 5 seconds. Current time is :: "+ new Date()); }}

应用程序配置如下:

 

  

applicationContext.xml< ?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context/ http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util/ http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/task/ http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <task:annotation-driven /> <bean id="demoServiceBasicUsageCron" class="com.howtodoinjava.service.DemoServiceBasicUsageCron"></bean></beans>

 

  

四、使用properties文件配置Cron

在这个方法中,cron 属性与@Scheduled 注释一起使用。此属性的值必须是 cron 表达式,如前面的方法所示,但是,此 cron 表达式将在属性文件中定义,相关属性的键将用于@Scheduled 注释。

 

  这将使 cron 表达式与源代码分离,从而使更改变得容易。

  

DemoServicePropertiesExample.javapackage com.howtodoinjava.service;import java.util.Date;import org.springframework.scheduling.annotation.Scheduled;public class DemoServicePropertiesExample { @Scheduled(cron = "${cron.expression}") public void demoServiceMethod() { System.out.println("Method executed at every 5 seconds. Current time is :: "+ new Date()); }}

应用程序配置如下:

 

  

applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context/ http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util/ http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/task/ http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <task:annotation-driven /> <util:properties id="applicationProps" location="application.properties" /> <context:property-placeholder properties-ref="applicationProps" /> <bean id="demoServicePropertiesExample" class="com.howtodoinjava.service.DemoServicePropertiesExample"></bean></beans>

 

  

五、使用context配置Cron

该方法在属性文件中配置 cron 表达式,在配置文件中使用 cron 表达式的属性键配置作业调度。主要的变化是您不需要在任何方法上使用@Scheduled 注释。方法配置也是在应用程序配置文件中完成的。

 

  举例:

  

DemoServiceXmlConfig.javapackage com.howtodoinjava.service;import java.util.Date;public class DemoServiceXmlConfig{ public void demoServiceMethod() { System.out.println("Method executed at every 5 seconds. Current time is :: "+ new Date()); }}

应用程序配置如下:

 

  

applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context/ http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util/ http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/task/ http://www.springframework.org/schema/task/spring-task-3.0.xsd"> <task:annotation-driven /> <util:properties id="applicationProps" location="application.properties" /> <context:property-placeholder properties-ref="applicationProps" /> <bean id="demoServiceXmlConfig" class="com.howtodoinjava.service.DemoServiceXmlConfig" /> <task:scheduled-tasks> <task:scheduled ref="demoServiceXmlConfig" method="demoServiceMethod" cron="#{applicationProps[cron.expression]}"></task:scheduled> </task:scheduled-tasks></beans>

 

  

总结

到此这篇关于Spring中@Scheduled功能使用的文章就介绍到这了,更多相关Spring@Scheduled使用内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • spring编程式事务处理,spring编程事务
  • spring编程式事务处理,spring编程事务,详解Spring学习之编程式事务管理
  • spring的核心功能模块有几个,列举一些重要的spring模块
  • spring的核心功能模块有几个,列举一些重要的spring模块,七个Spring核心模块详解
  • spring注解和springmvc的注解,SpringMVC常用注解
  • spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解
  • spring实现ioc的四种方法,spring的ioc的三种实现方式
  • spring实现ioc的四种方法,spring的ioc的三种实现方式,简单实现Spring的IOC原理详解
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况
  • spring事务失效问题分析及解决方案怎么做,spring 事务失效情况,Spring事务失效问题分析及解决方案
  • spring5.0新特性,spring4新特性
  • spring5.0新特性,spring4新特性,spring5新特性全面介绍
  • spring ioc以及aop原理,springmvc aop原理
  • spring ioc以及aop原理,springmvc aop原理,深入浅析Spring 的aop实现原理
  • Spring cloud网关,spring cloud zuul作用
  • 留言与评论(共有 条评论)
       
    验证码: