1.spring配置文件上添加对task的描述
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task"
。。。。。。
xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
2.spring配置文件中设置具体的任务
cron表达式的介绍可以参考其他文档,跟Quartz的表达式是一样的,"0 * * * * ?"是指每分钟执行该任务,任务内容为taskJob中work方法
<task:scheduled-tasks>
<task:scheduled ref="taskJob" method="work" cron="0 * * * * ?"/>
</task:scheduled-tasks>
3.对应的TaskJob类文件如下:
package com.company.web.servlet;
import org.springframework.stereotype.Service;
@Service
public class TaskJob {
public void work() {
System.out.println(123);
}
}
由于这里使用了注解,需要在spring配置文件中设置扫描路径,如果未使用注解,把QuzrtzJob类加入spring配置文件即可
<context:component-scan base-package="com.company.web.servlet" />
task也可以使用注解的方式实现
@Component //import org.springframework.stereotype.Component;
public class MyTestServiceImpl implements IMyTestService {
@Scheduled(cron="0/5 * * * * ? ") //每5秒执行一次
@Override
public void myTest(){
System.out.println("进入测试");
}
}
需要注意的几点:
1、spring的@Scheduled注解 需要写在实现上、
2、 定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true、具体就去百度google吧)
3、实现类上要有组件的注解@Component