spring提供了定时任务功能,不需要第三方jar包支持,spring足以。
代码:
- package com.inth.product.web.task;
-
- import java.util.Date;
-
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
-
- import com.inth.product.service.impl.ContractServiceImpl;
-
- @Component("changeStateTask")
- public class ChangeStateTask{
-
- @Autowired
- private ContractServiceImpl contractServiceImpl;
-
-
-
-
-
-
-
-
-
-
-
-
-
- @Scheduled(cron = "0 0 * * * ?")
- public void doJob(){
- this.contractServiceImpl.executeStateChange();
- }
-
-
-
-
-
-
- @Scheduled(fixedRate = 60*1000)
- public void doJob1(){
- System.out.println(new Date() + "-----------------doJob1");
- }
-
-
-
-
-
-
- @Scheduled(fixedDelay = 60*1000)
- public void doJob2(){
- System.out.println(new Date() + "-----------------doJob2");
- }
- }
applicationContext.xml配置文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:task="http://www.springframework.org/schema/task"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
- http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd ">
-
- <context:component-scan base-package="com.inth" />
-
- <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
- <task:scheduler id="qbScheduler" pool-size="10"/>
- </beans>
注意事项:
1,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.2.xsd "
2,fixedRate和fixedDelay的区别写在注释上了。
以上情况不基于注解纯配置如下:
代码:
- package com.inth.product.web.task;
-
- import java.util.Date;
-
-
- import com.inth.product.service.impl.ContractServiceImpl;
-
- public class ChangeStateTask{
- private ContractServiceImpl contractServiceImpl;
- public void doJob(){
- System.out.println(new Date() + "-----------------doJob");
-
- }
- public void doJob1(){
- System.out.println(new Date() + "-----------------doJob1");
- }
- public void doJob2(){
- System.out.println(new Date() + "-----------------doJob2");
- }
- }
applicationContext.xml配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:task="http://www.springframework.org/schema/task"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
- http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd ">
-
- <context:component-scan base-package="com.inth" />
- <bean name="taskJob" class="com.inth.product.web.task.ChangeStateTask"></bean>
- <task:scheduled-tasks>
- <task:scheduled ref="taskJob" method="doJob" cron="0/5 * * * * ?"/>
- <task:scheduled ref="taskJob" method="doJob1" fixed-rate="5000"/>
- <task:scheduled ref="taskJob" method="doJob2" fixed-delay="5000"/>
- </task:scheduled-tasks>
- </beans>
附:cron表达式配置说明
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
表达式 意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
特殊字符 意义
* 表示所有值;
? 表示未说明的值,即不关心它为何值;
- 表示一个指定的范围;
, 表示附加一个可能值;
/ 符号前表示开始时间,符号后表示每次递增的值;
http://blog.csdn.net/qq525099302/article/details/38338921