最近发现真的凹凸了,Spring升级到3后原来已经自带任务调度器了,之前还一直使用着Quartz。其实也不是Quartz不好,只是相比之下,使用Spring task真的简单很多,无论是理解还是使用。
Spring Task提供两种方式进行配置,正如大家所想吧,还是一种是annotation(标注),而另外一种就是XML配置了。但其实这里我觉得比较尴尬,因为任务调度这样的需求,通常改动都是比较多的,如果用annotation的方式的话,改动就变得麻烦了,必须去重新编译。所以,我只是选择用XML配置的方式,不过我还是习惯性地启用着标注方式,就如AOP配置那样。annotation方式请自行查找@Scheduled
具体配置参考如下即可
<?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" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"> <bean id="reminderProcessor" class="com.foo.task.ReminderProcessor"> <property name="workers"> <array value-type="com.foo.task.Worker"> <ref bean="projectScheduleRemindWorker" /> </array> </property> </bean> <!-- 配置任务线性池 --> <task:executor id="executor" pool-size="3" /> <task:scheduler id="scheduler" pool-size="3" /> <!-- 启用annotation方式 --> <task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true" /> <task:scheduled-tasks scheduler="scheduler"> <task:scheduled ref="reminderProcessor" method="process" cron="0 0 12 * * ?" /> </task:scheduled-tasks> </beans>
核心部分见
<task:scheduled-tasks scheduler="scheduler"> <task:scheduled ref="reminderProcessor" method="process" cron="0 0 12 * * ?" /> </task:scheduled-tasks>
意思就是每天的12点执行reminderProcessor这个Bean中的process方法。cron的配置表达式跟Quartz基本一致,但实测不支持一些特殊字符,如配置天的时候的L,W和Z,因为遇到要每个月倒数第三天执行任务调度的需求,但我一配置SpringTask报非法字符。
所以,Quartz和SpringTask间的差距也显而易见的。SpringTask用起来十分简单,毕竟是Spring自家的,虽然跟Quartz也可以实现结合,但没那么简单。而SpringTask功能也没Quartz强大,Quartz的集群和高级特性多的去了。所以大家可以自行选择了。不过一般情况下,觉得SpringTask足够了。
附上我这个例子的详细UML说明
相关推荐
Spring Task是Spring内置的轻量级任务调度器,而Quartz是更强大的第三方调度库,可以在Spring中集成使用。 1. **Spring Task** - **基本概念**:Spring Task是Spring框架的一部分,提供了基本的定时任务调度功能,...
这个“spring 任务调度实现代码例子”很可能是包含了一些示例代码,用于演示如何在Spring应用中配置和使用任务调度。下面将详细解释Spring任务调度的关键概念和实现方法。 1. **Spring Task模块** Spring Task是...
要使用Spring的内置任务调度,我们需要在配置中启用`TaskExecutor`和`TaskScheduler`。在XML配置中,可以添加如下配置: ```xml <bean id="taskExecutor" class="org.springframework.scheduling.concurrent....
Spring通过其`Task`模块提供了任务调度的功能,主要由两个核心组件构成:`TaskExecutor`和`TaskScheduler`。`TaskExecutor`用于异步执行任务,而`TaskScheduler`则用于计划未来的任务执行。这两个接口提供了灵活的...
Spring提供了三种主要的任务调度实现方式:Spring内置的任务调度器(TaskScheduler),Quartz Scheduler,以及Spring Batch。下面我们将详细介绍这三种方式。 1. Spring内置的任务调度器(TaskScheduler) Spring...
但如果只是简单的跑个任务其实spring升级到3后已经自带任务调度器了,相比之下Spring task无论是理解还是使用都简单很多。但是Quartz有线程和线程管理以及集群等高级特性,所以大家可以自行选择了。不过一般情况下,...
在IT行业中,Spring框架是Java开发中的重要组成部分,它提供了丰富的功能,其中之一就是任务调度。本篇文章将深入探讨Spring任务调度的实现方法,以及如何利用Quartz库来增强任务管理能力。 首先,让我们理解Spring...
Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`模块和第三方的Quartz库。下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是...
`SchedulerFactoryBean`是Spring提供的用于创建Quartz调度器的bean,`triggers`属性的列表包含了需要调度的任务触发器。在这里,`startQuertz`会在容器启动时立即执行调度程序。 关于cron表达式的值,我们可以看到...
在Spring Boot应用中,通过`@EnableScheduling`注解开启定时任务调度器。这会启动一个后台任务调度线程,定期检查是否有需要执行的任务。 ```java @Configuration @EnableScheduling public class AppConfig { // ...
下面将详细介绍Spring调度器的相关知识点。 一、Spring Task模块 Spring Task是Spring Framework的一部分,提供了异步任务执行和定时任务调度的能力。它包括两个主要部分:`TaskExecutor`用于异步任务执行,而`...
这个"Spring定时调度简单实现源码"很显然是一个关于如何在Spring中配置和使用定时任务的示例代码包。下面我们将深入探讨Spring的定时调度机制以及其核心组件。 Spring的定时任务调度主要依赖于两个关键组件:`Task...
Spring框架提供了一个强大的任务调度模块——Spring Task,也被称为Spring Batch,它支持基于时间的任务调度和基于事件的任务触发。 首先,我们需要在`pom.xml`文件中添加Spring相关的依赖。这通常包括`spring-...
Spring Quartz 调度器是Java开发中常用的一种任务调度框架,它结合了Spring框架的强大功能与OpenSymphony的Quartz库,使得开发者能够轻松地在应用中添加定时任务。在myEclipse环境中,借助Tomcat服务器和JDK运行环境...
Spring 定时器 任务调度 怎么在项目中写定时任务 怎么配置一些环境
Spring Task和Zookeeper是两种在分布式环境中常用于任务调度的技术。Spring Task是Spring框架的一部分,提供了在Java应用程序中实现定时任务的能力,而Zookeeper则是一个分布式协调服务,常被用作分布式系统的配置...
在IT行业中,Spring框架是Java领域最常用的轻量级开源框架之一,它的功能强大且全面,其中就包括了定时任务调度。本篇文章将探讨如何在Spring中实现定时调度,并将调度信息持久化到数据库中,这在实际业务场景中非常...
Spring框架是Java开发中广泛使用的轻量级框架,它提供了许多功能,其中之一就是调度任务执行。Spring调度允许开发者安排一次性或周期性的任务执行,这对于实现后台服务、定时任务或者批处理作业非常有用。本篇文章将...
在本篇中,我们将深入探讨如何使用Spring结合Quartz来实现任务的自动调度,以及所需的jar包。 首先,我们要理解Spring的Task Execution和Scheduling模块。这个模块提供了一个统一的接口,可以方便地在应用中执行...