`

在Spring3中使用注解(@Scheduled)创建计划任务

阅读更多

Spring3中加强了注解的使用,其中计划任务也得到了增强,现在创建一个计划任务只需要两步就完成了:

  1. 创建一个Java类,添加一个无参无返回值的方法,在方法上用@Scheduled注解修饰一下;
  2. 在Spring配置文件中添加三个<task:**** />节点;

最后说明一下,第一步创建的Java类要成为Spring可管理的Bean,可以直接写在XML里,也可以@Component一下

 

示例如下

计划任务类:

/**
 * com.zywang.spring.task.SpringTaskDemo.java
 * @author ZYWANG 2011-3-9
 */
package com.zywang.spring.task;

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

/**
 * Spring3 @Scheduled 演示
 * @author ZYWANG 2011-3-9
 */
@Component
public class SpringTaskDemo {

	@Scheduled(fixedDelay = 5000)
	void doSomethingWithDelay(){
		System.out.println("I'm doing with delay now!");
	}
	
	@Scheduled(fixedRate = 5000)
	void doSomethingWithRate(){
		System.out.println("I'm doing with rate now!");
	}
	
	@Scheduled(cron = "0/5 * * * * *")
	void doSomethingWith(){
		System.out.println("I'm doing with cron now!");
	}
}

Spring配置文件:

<?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-3.0.xsd">
	<!-- Enables the Spring Task @Scheduled programming model -->
	<task:executor id="executor" pool-size="5" />
	<task:scheduler id="scheduler" pool-size="10" />
	<task:annotation-driven executor="executor" scheduler="scheduler" />
</beans>

 

 以上内容基于Spring 3.0.5 版本运行,参考文档为spring-framework-reference-3.0.5.pdf

10
6
分享到:
评论
10 楼 sanorol 2017-10-11  
qja 写道
citi007 写道

<task:annotation-driven executor="executor" scheduler="scheduler" />
这是否与spring 事物声明式事物管理的配置有冲突?

<tx:annotation-driven transaction-manager="transactionManager"/>

我在整合的时候报出异常
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.

猜想Only one AsyncAnnotationBeanPostProcessor may exist within the context,
而不同的annotation-drivern 必然会多次创建new AsynoAnnotationBean后处理器,

你有声明式的整合方案么?
mail to :citi007@126.com

这个问题最后怎么解决的呢?



最后解决,去掉 annotation-drivern ,直接加了注解会自动扫描创建
9 楼 qja 2017-01-20  
citi007 写道

<task:annotation-driven executor="executor" scheduler="scheduler" />
这是否与spring 事物声明式事物管理的配置有冲突?

<tx:annotation-driven transaction-manager="transactionManager"/>

我在整合的时候报出异常
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.

猜想Only one AsyncAnnotationBeanPostProcessor may exist within the context,
而不同的annotation-drivern 必然会多次创建new AsynoAnnotationBean后处理器,

你有声明式的整合方案么?
mail to :citi007@126.com

这个问题最后怎么解决的呢?
8 楼 zhuchao_ko 2013-01-11  
不错 这个DEMO终于完整了。
7 楼 langke93 2012-11-05  
  <context:component-scan base-package="*" />   
把这给漏了
6 楼 violetluna 2011-12-28  
xml声明差这个
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
5 楼 itbailu 2011-12-09  
没反映啊   
4 楼 runjia1987 2011-11-26  
这个任务调度注解 需要quartz这个库支持吗?
3 楼 zywang 2011-05-19  
citi007 写道
在使用定时任务的annotation-driven时,需要配置
<task:annotation-driven executor="executor" scheduler="scheduler" />
这是否与spring 事物声明式事物管理的配置


我们现在的系统中没有出现问题,你检查下,有没有类被重复加载啊
2 楼 citi007 2011-05-19  

<task:annotation-driven executor="executor" scheduler="scheduler" />
这是否与spring 事物声明式事物管理的配置有冲突?

<tx:annotation-driven transaction-manager="transactionManager"/>

我在整合的时候报出异常
Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.

猜想Only one AsyncAnnotationBeanPostProcessor may exist within the context,
而不同的annotation-drivern 必然会多次创建new AsynoAnnotationBean后处理器,

你有声明式的整合方案么?
mail to :citi007@126.com
1 楼 citi007 2011-05-19  
在使用定时任务的annotation-driven时,需要配置
<task:annotation-driven executor="executor" scheduler="scheduler" />
这是否与spring 事物声明式事物管理的配置

相关推荐

    Spring @Scheduled定时任务动态修改cron参数

    `@Scheduled`注解是Spring Framework中用于创建定时任务的重要工具,它允许开发者在不重启应用的情况下,实现定时任务的动态配置,特别是修改cron表达式来调整执行周期。 在Spring中,定时任务主要通过`@Scheduled`...

    Spring定时任务@Scheduled例子

    `task:executor`则是Spring中用于处理异步任务的bean,它可以被`@Async`和`@Scheduled`注解的方法使用。配置`task:executor`可以定制线程池属性,如核心线程数、最大线程数、线程存活时间等。 5. **测试说明** 在...

    使用spring @Scheduled注解执行定时任务

    要在Spring中使用`@Scheduled`注解,首先需要在Spring配置文件中引入任务相关的命名空间: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    spring boot @scheduled定时任务配置

    在Spring Boot框架中,`@Scheduled`注解是用于创建定时任务的重要工具,它使得开发者无需依赖外部的任务调度器如Quartz或CronJob,就能在应用内部轻松地实现周期性的任务执行。这个特性极大地简化了Java应用中的定时...

    Spring Boot中的@Scheduled注解:定时任务的原理与实现

    通过本文的学习,您已经掌握了如何在Spring Boot应用中使用`@Scheduled`注解来创建和管理定时任务。`@Scheduled`注解不仅简化了定时任务的配置过程,而且还提供了丰富的参数选项,使得开发者能够根据具体的业务需求...

    详解在Spring3中使用注解(@Scheduled)创建计划任务

    本文将详细介绍如何在Spring3中使用`@Scheduled`注解来创建计划任务。 首先,你需要创建一个Java类,该类中包含需要周期性执行的方法。这些方法需要添加`@Scheduled`注解,并且方法本身应无参数且无返回值。例如: ...

    详解Spring Boot中使用@Scheduled创建定时任务

    使用 @Scheduled 注解可以轻松地创建定时任务,在 Spring Boot 中应用非常广泛。@Scheduled 注解提供了多种方式来定义定时任务,包括 fixedRate、fixedDelay、initialDelay 等方式,以及使用 cron 表达式来定义规则...

    @scheduled任务调度使用详解及@scheduled与多线程和@Async异步任务结合使用

    `@Scheduled`是Spring Framework中的一个注解,它允许我们在不需要任何第三方库的情况下,如Quartz或CronTrigger,就能创建定时任务。要使用`@Scheduled`,首先需要在配置类上启用定时任务支持,通过`@...

    SpringBoot中使用@Scheduled注解创建定时任务的实现

    SpringBoot中使用@Scheduled注解创建定时任务的实现是指在SpringBoot项目中使用@Scheduled注解来实现定时任务的方法。在SpringBoot项目中,使用@Scheduled注解可以轻松地实现定时任务,例如清理日志等。 ...

    Spring boot如何通过@Scheduled实现定时任务及多线程配置

    在本文中,我们将详细介绍如何使用 `@Scheduled` 注解来实现定时任务,并且探讨多线程配置的实现方式。 使用 `@Scheduled` 注解实现定时任务 `@Scheduled` 注解是 Spring Framework 提供的一种注解,用于标记需要...

    spring-boot通过@Scheduled配置定时任务及定时任务@Scheduled注解的方法

    在 Spring Boot 中,@Scheduled 注解可以与 @Component 注解组合使用,以便将定时任务 Bean 注册到 Spring IoC 容器中。在以下代码中,我们可以看到一个简单的定时任务示例: ```java @Component public class ...

    IDEA使用springboot自带scheduled实现任务调度

    本篇文章将详细介绍如何在IDEA中利用Spring Boot的Scheduled来实现任务调度。 首先,我们需要理解Scheduled的核心概念。Scheduled是Spring Framework的一个组件,它允许我们创建周期性执行的任务。在Spring Boot中...

    老外的 spring scheduler 实例 使用注解,比较全比较实用

    Spring Scheduler 是 Spring 框架中的一个强大工具,它允许开发者在应用程序中创建和管理定时任务。这个实例特别强调了使用注解的方式,这使得配置变得更加简洁和直观。`@Scheduled` 是 Spring 提供的一个注解,用于...

    spring 定时任务@Scheduled详解

    在Spring框架中,定时任务是通过`@Scheduled`注解实现的,该注解提供了灵活的方式来安排任务在特定时间执行。下面将详细讲解如何配置和使用`@Scheduled`,以及其相关的cron表达式。 首先,要启用Spring的定时任务...

    Spring-task定时任务

    本文将深入探讨Spring-task的注解方式和XML配置方式的使用,以及如何在实际项目中进行实践。 ### 一、Spring-task简介 Spring-task,也称为Spring的Task Execution and Scheduling模块,提供了一个统一的接口来...

    Java课程实验 Spring Boot 任务管理(源代码+实验报告)

    1.在Spring Boot中,你可以使用@Scheduled注解来创建定时任务。将@Scheduled注解与方法一起使用,指定任务执行的时间表达式。 2.使用Spring的TaskScheduler: Spring提供了TaskScheduler接口和相关实现,用于任务...

    spring之定时任务实现(spring-task和quartz等不同方式)

    使用`@Scheduled`注解,我们可以很方便地在任何可注入的bean上声明一个方法为定时任务。例如: ```java @Service public class TaskService { @Scheduled(fixedRate = 5000) public void executeTask() { // ...

    spring 定时器 注解+xml 方式模板

    如果需要手动控制,可以使用`@EnableScheduling`注解在配置类上开启定时任务,或者在XML配置中使用`&lt;task:scheduler&gt;`来创建调度器。要关闭定时任务,可以停止Spring容器,或者在代码中调用`Scheduler#pauseAll()`。...

    spring2 计划任务

    标题中的“spring2 计划任务”指的是Spring框架的第二版中关于计划任务(Scheduled Tasks)的功能。在Spring框架中,计划任务允许开发者定义周期性的任务,这些任务可以在指定的时间间隔执行,例如清理缓存、发送...

    spring-boot-scheduled.zip

    本案例将深入探讨如何使用Spring Boot的`@Scheduled`注解来创建和管理简单任务。 首先,我们需要在Spring Boot的配置类中开启定时任务支持。在配置类上添加`@EnableScheduling`注解,Spring Boot就会自动扫描带有`@...

Global site tag (gtag.js) - Google Analytics