Spring Task 定时任务

Spring Task 定时任务可通过两种方式进行配置:1、注解配置,2、XML配置

前期准备

创建 Maven 项目,在 pom.xml 文件中添加 spring-context 依赖

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>

1、通过@Scheduled注解配置方式实现定时任务

  • src/main/resources/spring/ 目录下创建 spring-task.xml 文件,配置注解扫描和开启 @Scheduled 注解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:task="http://www.springframework.org/schema/task"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd ">

<!-- Spring 扫描注解的配置 -->
<context:component-scan base-package="top.likeqc.springTask"/>
<!-- 配置定时任务驱动。开启这个配置,spring才能识别@Scheduled注解 -->
<task:annotation-driven/>
</beans>

注意定时任务需要的命名空间

1
2
3
4
xmlns:task="http://www.springframework.org/schema/task"

http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd
  • 创建定时任务类和方法
1
2
3
4
5
6
7
8
9
10
@Component
public class SpringTaskDemo {
@Scheduled(cron = "0/2 * * * * ?")
public void job1() {
System.out.println("Thread Name : "
+ Thread.currentThread().getName()
+ " i am a job1(注解配置方式) : date -> "
+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
}
  • 测试定时任务
1
2
3
4
5
public static void main(String[] args) {
System.out.println("定义任务测试...");
// 获取Spring上下文环境
ApplicationContext ac = new ClassPathXmlApplicationContext("spring/spring-task.xml");
}

2、通过XML配置方式实现定时任务

  • 定时任务方法
1
2
3
4
5
6
public void job2() {
System.out.println("Thread Name : "
+ Thread.currentThread().getName()
+ " i am a job2(XML配置方式) : date -> "
+ LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
  • src/main/resources/spring/spring-task.xml 文件中配置
1
2
3
4
5
6
7
8
9
10
<!--
配置定时规则
ref:指定的类,即任务类
method:指定的即需要运行的方法
cron:cronExpression表达式
-->
<task:scheduled-tasks>
<!-- 每隔五秒执行一次任务 -->
<task:scheduled ref="springTaskDemo" method="job2" cron="0/5 * * * * ?"/>
</task:scheduled-tasks>

相关内容

Cron 表达式


likeqc
ends