Spring自带的定时任务功能,基于注解和xml配置
1、Spring的配置文件
<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"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
<task:annotation-driven /> <!-- 定时器开关-->
<bean id="myTaskXml" class="com.spring.task.MyTaskXml"></bean>
<task:scheduled-tasks>
<!--
这里表示的是每隔五秒执行一次
-->
<task:scheduled ref="myTaskXml" method="show" cron="*/5 * * * * ?" />
<task:scheduled ref="myTaskXml" method="print" cron="*/10 * * * * ?"/>
</task:scheduled-tasks>
<!-- 自动扫描的包名 -->
<context:component-scan base-package="com.spring.task" />
</beans>
2、基于xml的定时器任务
package com.spring.task;
/**
* 基于xml的定时器
* @author hj
*/
public class MyTaskXml {
public void show(){
System.out.println("XMl:is show run");
}
public void print(){
System.out.println("XMl:print run");
}
}
3、基于注解的定时器任务
package com.spring.task;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* 基于注解的定时器
* @author hj
*/
@Component
public class MyTaskAnnotation {
/**
* 定时计算。每天凌晨 01:00 执行一次
*/
@Scheduled(cron = "0 0 1 * * *")
public void show(){
System.out.println("Annotation:is show run");
}
/**
* 心跳更新。启动时执行一次,之后每隔2秒执行一次
*/
@Scheduled(fixedRate = 1000*2)
public void print(){
System.out.println("Annotation:print run");
}
4、测试
package com.spring.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-mvc.xml");
}
}
5、其他实现方式——quartz
<!-- 定义调用对象和调用对象的方法 -->
<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="finance.generateDataService"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>generateData</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobtask"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>0 0 8 1 * ?</value>
</property>
</bean>
<!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime"/>
</list>
</property>
</bean>
相关推荐
在本文中,我们将深入探讨Spring的定时任务功能,包括如何配置、创建和执行定时任务,以及如何利用其进行测试。 1. **Spring Task模块**: Spring在其核心模块中包含了Task模块,它提供了异步任务执行和定时任务...
下面我们将深入探讨Spring的自带定时任务,包括基于注解和XML配置两种方式。 ### 1. Spring定时任务基础 Spring的定时任务功能是通过`org.springframework.scheduling`包中的类来实现的,主要涉及`TaskScheduler`...
Spring Task可以通过注解或XML配置文件来配置任务。如果使用注解的方式,仅需要在方法上加上@Scheduled注解,并且设置cron表达式、fixedDelay、fixedRate等参数即可。如果是通过XML配置文件的方式,则需要在配置文件...
Spring框架是Java应用开发中的一个核心组件,它提供了丰富的功能,包括依赖注入、AOP(面向切...而Spring自带的定时任务功能则提供了一种轻量级的选择,无需额外引入外部库。选择哪种方式取决于项目的具体需求和规模。
Spring框架提供了一系列工具来支持定时任务的实现,其中包括Spring自带的`spring-task`模块和第三方的Quartz库。下面我们将详细探讨这两种方式以及如何通过注解和非注解的方式进行配置。 首先,`spring-task`是...
Spring的定时任务可以通过两种方式实现:基于注解和基于XML配置。 1. **基于注解的定时任务**: 使用`@Scheduled`注解可以在类或方法级别声明定时任务。例如: ```java @Component @EnableScheduling public ...
总结,通过上述步骤,我们已经成功地使用Spring注解配置了Quartz2.2.1,实现了基于注解的任务调度。这种方式简化了配置,使得任务管理和扩展更加方便。在实际开发中,可以根据项目需求调整触发规则,实现复杂的定时...
在"spring-schema-task3.2.1"和"spring-schema-task3.1.0"这两个文件中,包含了Spring Task的相关配置和依赖,你可以通过XML配置或者Java配置来定义定时任务。例如,你可以定义一个`TaskExecutor`来执行异步任务,...
在Spring Boot的应用主类或配置类上添加`@EnableScheduling`注解,这会启动一个后台任务调度器,检查并执行配置的定时任务。 ```java import org.springframework.scheduling.annotation.EnableScheduling; import...
- **配置定时任务**:在Spring配置文件中启用定时任务功能,通常只需要开启定时任务的支持即可。 ```xml ``` 通过上述步骤,我们便完成了基于Spring框架的定时任务实现。总的来说,Quartz和Spring Task各有...
1. **Spring Task模块**:Spring自带的Task模块(也称为Spring Batch)提供了简单的定时任务功能。通过`@Scheduled`注解,我们可以很方便地在方法上声明一个定时任务,如: ```java import org.springframework....
Quartz是更强大的任务调度库,而`@Scheduled`注解则是Spring框架自带的简单定时任务解决方案。 1. 引入依赖: 如果选择`spring-boot-starter-scheduled`,在`pom.xml`中添加如下依赖: ```xml <groupId>org....
它允许开发者使用注解或XML配置来定义任务,并且可以很方便地与Spring的其他功能(如AOP切面、事务管理等)集成。此外,Spring还提供了对Quartz的集成,使得在Spring应用中使用Quartz变得更加便捷。 4. **设计模式...
任务的配置通常在Spring的配置文件(如`applicationContext.xml`)中完成,这里可以定义`TaskExecutor`和`TaskScheduler`的实例,并声明哪些bean具有定时任务。此外,还可以通过`TaskManagementConfigUtils`类和`@...
Quartz是一个功能丰富的开源作业调度库,而Spring Task则是Spring框架自带的任务调度模块,它们都可以用来创建、管理和执行定时任务。 1. **Quartz**:如果你选择了Quartz作为调度器,你需要添加相关的依赖到你的`...
Spring Boot提供了多种方式来实现定时任务,主要分为两种:Spring自带的`@Scheduled`注解和引入第三方库Quartz。 1. **Spring自带的定时任务**:基于`@Scheduled`注解 这种方式是Spring框架提供的简单定时任务...