Spring MVC的功能非常强大,集成了Quartz定时器的功能,可以通过Cron表达式和简单的注解就实现定时执行任务的功能。
网上看到不少例子,但是都不是很全。
闲话少说,首先要在springmvc.xml中添加下面几行:
xmlns:task="http://www.springframework.org/schema/task"
<!--下面两行要放在xsi:schemaLocation里面-->
有了这两行代码,就可以在配置文件中添加定时器配置的XML代码。例子如下:
还是在springmvc.xml里面,这两行不用再解释,让springmvc知道去哪里扫描带注解的文件:
<!-- 注解扫描包 -->
<context:component-scan base-package="com.cmsv2.controller" />
<!-- 第二个注解包,这里面只有@Scheduled,所以不扫描controller -->
<context:component-scan base-package="com.cmsv2.schedule">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<!-- 开启注解 -->
<mvc:annotation-driven/>
然后在下面加上:
<!-- 定时器配置
task:executor/@pool-size:可以指定执行线程池的初始大小、最大大小
task:executor/@queue-capacity:等待执行的任务队列的容量
task:executor/@rejection-policy:当等待队已满时的策略,分为丢弃、由任务执行器直接运行等方式
-->
<task:scheduler pool-size="10" />
<task:executor keep-alive="3600" pool-size="100-200"
queue-capacity="500" rejection-policy="CALLER_RUNS" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
这几行从网上copy。
同时还要添加一个aopaliaance.jar,否则会报错:noClassDefoundError:org/aopalliance/aop/Advice
地址:
下载后add to buildpath。
至此配置工作完成。
下面开始写代码:
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component ;
@Component
public class ScheduledTest2 {
@Scheduled(cron = "0 0/1 * * * ?")
public void runFunction(){
System.out.println(new Date() + " package.controller scheduled test --> mahaha") ;
}
}
然后就OK了!每分钟执行一次~~~