主要步骤
- 在applicationContext.xml中添加
xmlns:task="http://www.springframework.org/schema/task"
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
- 在applicationContext.xml中配置定时器
<task:annotation-driven /> <!-- 定时器开关-->
<bean id="myTask" class="com.kyl.scheduledtask.statictask.applicationContextXml.MyTask"></bean>
<task:scheduled-tasks>
<!-- 这里表示的是每隔五秒执行一次 -->
<task:scheduled ref="myTask" method="show" cron="*/5 * * * * ?" />
<task:scheduled ref="myTask" method="print" cron="*/10 * * * * ?"/>
</task:scheduled-tasks>
<!-- 自动扫描的包名 -->
<context:component-scan base-package="com.kyl.scheduledtask.statictask.applicationContextXml" />
- 参考下面完整代码配置完后,直接运行main方法,可直接在控制台查看结果
注意事项
- spring3.x可以通过标签轻易的定义定时任务,而且不需要依赖第三方jar包如quartz等,这个是Spring自己的实现,但不支持集群,其cron表达式也不支持年。
- Spring4.0版本以上支持动态改变cron的值
- 如果使用注解的话,改变cron的值需要重新编译java类,而使用xml设置cron则不需要
完整代码
applicationContext.xml
<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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd">
<task:annotation-driven /> <!-- 定时器开关-->
<bean id="myTask" class="com.kyl.scheduledtask.statictask.applicationContextXml.MyTask"></bean>
<task:scheduled-tasks>
<!-- 这里表示的是每隔五秒执行一次 -->
<task:scheduled ref="myTask" method="show" cron="*/5 * * * * ?" />
<task:scheduled ref="myTask" method="print" cron="*/10 * * * * ?"/>
</task:scheduled-tasks>
<!-- 自动扫描的包名 -->
<context:component-scan base-package="com.kyl.scheduledtask.statictask.applicationContextXml" />
</beans>
MyTask.java
package com.kyl.scheduledtask.statictask.applicationContextXml;
/**
* 定时任务基于applicationContext.xml配置
*/
public class MyTask {
public void show() {
System.out.println("show method 1");
}
public void print() {
System.out.println("print method 1");
}
}
Main.java
package com.kyl.scheduledtask.statictask.applicationContextXml;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args) throws InterruptedException {
new ClassPathXmlApplicationContext("classpath:com//kyl//scheduledtask//statictask//applicationContextXml//applicationContext.xml");
}
}
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wisely</groupId>
<artifactId>highlight_spring4</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>10</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.3.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>10</source>
<target>10</target>
</configuration>
</plugin>
</plugins>
</build>
</project>