Spring3.x 注解配置定时任务详解
程序员文章站
2022-05-25 12:53:05
...
今天给大家介绍一款非常好用的定时器:spring 3版本的利用注解配置在项目的xml文件中。
1、首先在 spring-config.xml 配置文件头部配置须有:
xmlns:task="http://www.springframework.org/schema/task"
其次xsi:schemaLocation须添加:
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd
2、spring 扫描过程必须涵盖定时任务类所在的目录:com.xx 属于定时任务类的父级甚至更高级
<context:component-scan base-package="com.xx.xx" />
或者可以再详细设置一下:要扫描com.nd包下的所有子类目录,不包含@Controller 相关的文件
<context:component-scan base-package="com.nd">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
3、设置动作启用定时任务:启用注解驱动的定时任务
<task:annotation-driven/>
或者指定定时任务的目录 myScheduler
<task:annotation-driven scheduler="myScheduler"/>
4、配置线程池:可以指定执行线程池的初始大小、最大大小
<task:executor id="executor" pool-size="3" />
调度线程池的大小,调度线程在被调度任务完成前一直运行
<task:scheduler id="myScheduler" pool-size="5"/>
5、项目中java 方法:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class MyTask {
@Scheduled(cron = "*/60 * * * * ?")//每隔60秒执行一次
public void test() throws Exception {
System.out.println("Test is working......");
}
//@Scheduled(cron = "0 0 2 * * ?")//每天凌晨1点整
//@Scheduled(cron = "0 30 0 * * ?")//每天凌晨0点30分
//@Scheduled(cron = "0 */60 * * * ?")//1小时处理一次
}
总结:定时器从配置到项目编码都在这,有不懂的地方欢迎留言!