Spring定时任务
一、实现方法1:
1、web.xml引入task命名空间:
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配置文件添加扫描包注解:
<context:component-scan base-package="cn.hncu"> </context:component-scan>
3、定时任务扫描注解:
<!-- S 配置定时任务--> <task:executor id="executor" pool-size="5" /> <!--配置线程池--> <task:scheduler id="scheduler" pool-size="10" /> <task:annotation-driven executor="executor" scheduler="scheduler" /> <!--E 配置定时任务-->
4、代码实现:
1 @Component 2 public class DemoTask { 3 @Scheduled(fixedRate = 5000) 4 //以一个固定延迟时间5秒钟调用一次执行 5 public void demo2(){ 6 logger.info("定时任务demo2开始."); 7 long begin = System.currentTimeMillis(); 8 //执行你需要操作的定时任务 9 try { 10 Thread.sleep(1000); 11 } catch (InterruptedException e) { 12 e.printStackTrace(); 13 } 14 long end = System.currentTimeMillis(); 15 logger.info("定时任务demo2结束,共耗时:[" + (end-begin)+ "]毫秒"); 16 } 17 }
二、实现方法2:
1、方法1中的第一步和第三步可以去掉;
2、代码实现:
1 @EnableScheduling 2 @Component 3 @Lazy(false) 4 public class DemoTask { 5 @Scheduled(cron = "*/5 * * * * ?") 6 //以一个固定延迟时间5秒钟调用一次执行 7 public void demo2(){ 8 logger.info("定时任务demo2开始."); 9 long begin = System.currentTimeMillis(); 10 //执行你需要操作的定时任务 11 try { 12 Thread.sleep(1000); 13 } catch (InterruptedException e) { 14 e.printStackTrace(); 15 } 16 long end = System.currentTimeMillis(); 17 logger.info("定时任务demo2结束,共耗时:[" + (end-begin)+ "]毫秒"); 18 } 19 }