在项目中我需要一个定时器,在每天访问量很低,或者没有人访问的时候,把需要统计的数据进行采集,分析,存储,以便于高层管理者决策,参考.
所以既然我的项目利用了spring.为什么不用spring封装好的定时器呢. 好简单的o.
step1:新建ReportTask.java类. 该类继承了java.util.TimerTask,并且需要复写TimerTask类中的run方法.
Java代码 1.package com.tiros.caredog.cd.util;
2.
3.import java.sql.Connection;
4.import java.sql.PreparedStatement;
5.import java.util.TimerTask;
6.
7.import org.apache.log4j.Logger;
8.import org.springframework.context.ApplicationContext;
9.import org.springframework.context.support.ClassPathXmlApplicationContext;
10.
11.import com.tiros.caredog.cd.dao.ReportDao;
12.import com.tiros.caredog.cd.pojo.Report;
13.
14.public class ReportTask extends TimerTask {
15.
16. private Logger logger = Logger.getLogger(ReportTask.class);
17.
18. public void run() {
19. ApplicationContext context = new ClassPathXmlApplicationContext(
20. "applicationContext.xml");
21. ReportDao reportDao = (ReportDao) context.getBean("reportDaoImp");
22. DateUtil dateUtil = new DateUtil();
23.
24. for (int j = 1; j <= 3; j++) {// 日期
25. String day = dateUtil.convert(dateUtil.theDayBeforeSomeDay(j),"yyyy-MM-dd");// 昨天 /前天/ 大前天
26. for (int i = 1; i <= 2; i++) {// 版本号
27. boolean isBackup = reportDao.checkIsBackup(day, i);
28. if (!isBackup) {// 没有备份
29. Report report = reportDao.queryTheDayBeforeSomeDay(day, i);
30. saveReport(report);
31. }
32. }
33. }
34. }
35.
36.
37.}
package com.tiros.caredog.cd.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.tiros.caredog.cd.dao.ReportDao;
import com.tiros.caredog.cd.pojo.Report;
public class ReportTask extends TimerTask {
private Logger logger = Logger.getLogger(ReportTask.class);
public void run() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
ReportDao reportDao = (ReportDao) context.getBean("reportDaoImp");
DateUtil dateUtil = new DateUtil();
for (int j = 1; j <= 3; j++) {// 日期
String day = dateUtil.convert(dateUtil.theDayBeforeSomeDay(j),"yyyy-MM-dd");// 昨天 /前天/ 大前天
for (int i = 1; i <= 2; i++) {// 版本号
boolean isBackup = reportDao.checkIsBackup(day, i);
if (!isBackup) {// 没有备份
Report report = reportDao.queryTheDayBeforeSomeDay(day, i);
saveReport(report);
}
}
}
}
}
上面的流程看懂看不懂都无所谓, 反正都是到达规定时间后,自动执行的.
关键点是extends TimerTask. 并且复写run()方法.
然后再applicationContext.xml中配置如下
Java代码 1.<!--spring 定时器 -->
2.<bean id="quartzClock"
3. class="org.springframework.scheduling.quartz.JobDetailBean">
4. <property name="jobClass">
5. <value>com.tiros.caredog.cd.util.ReportTask</value>
6. </property>
7.</bean>
8.
9.<bean id="cronQuartzClock"
10. class="org.springframework.scheduling.quartz.CronTriggerBean">
11. <property name="jobDetail" ref="quartzClock"></property>
12. <property name="cronExpression">
13. <value>0 1,2,3,4,5,6,7,8,9,10 1 * * ?</value>
14. <!-- 每天凌晨1点1分到1点10分自动备份 -->
15. <!-- 秒 份 时 日 月 星期 年 -->
16. <!-- 区间 *通配/每天/月/年 ?
17. -->
18. </property>
19.</bean>
20.
21.<bean
22. class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
23. <property name="triggers">
24. <list>
25. <ref bean="cronQuartzClock" />
26. </list>
27. </property>
28.</bean>
所以既然我的项目利用了spring.为什么不用spring封装好的定时器呢. 好简单的o.
step1:新建ReportTask.java类. 该类继承了java.util.TimerTask,并且需要复写TimerTask类中的run方法.
Java代码 1.package com.tiros.caredog.cd.util;
2.
3.import java.sql.Connection;
4.import java.sql.PreparedStatement;
5.import java.util.TimerTask;
6.
7.import org.apache.log4j.Logger;
8.import org.springframework.context.ApplicationContext;
9.import org.springframework.context.support.ClassPathXmlApplicationContext;
10.
11.import com.tiros.caredog.cd.dao.ReportDao;
12.import com.tiros.caredog.cd.pojo.Report;
13.
14.public class ReportTask extends TimerTask {
15.
16. private Logger logger = Logger.getLogger(ReportTask.class);
17.
18. public void run() {
19. ApplicationContext context = new ClassPathXmlApplicationContext(
20. "applicationContext.xml");
21. ReportDao reportDao = (ReportDao) context.getBean("reportDaoImp");
22. DateUtil dateUtil = new DateUtil();
23.
24. for (int j = 1; j <= 3; j++) {// 日期
25. String day = dateUtil.convert(dateUtil.theDayBeforeSomeDay(j),"yyyy-MM-dd");// 昨天 /前天/ 大前天
26. for (int i = 1; i <= 2; i++) {// 版本号
27. boolean isBackup = reportDao.checkIsBackup(day, i);
28. if (!isBackup) {// 没有备份
29. Report report = reportDao.queryTheDayBeforeSomeDay(day, i);
30. saveReport(report);
31. }
32. }
33. }
34. }
35.
36.
37.}
package com.tiros.caredog.cd.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.TimerTask;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.tiros.caredog.cd.dao.ReportDao;
import com.tiros.caredog.cd.pojo.Report;
public class ReportTask extends TimerTask {
private Logger logger = Logger.getLogger(ReportTask.class);
public void run() {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
ReportDao reportDao = (ReportDao) context.getBean("reportDaoImp");
DateUtil dateUtil = new DateUtil();
for (int j = 1; j <= 3; j++) {// 日期
String day = dateUtil.convert(dateUtil.theDayBeforeSomeDay(j),"yyyy-MM-dd");// 昨天 /前天/ 大前天
for (int i = 1; i <= 2; i++) {// 版本号
boolean isBackup = reportDao.checkIsBackup(day, i);
if (!isBackup) {// 没有备份
Report report = reportDao.queryTheDayBeforeSomeDay(day, i);
saveReport(report);
}
}
}
}
}
上面的流程看懂看不懂都无所谓, 反正都是到达规定时间后,自动执行的.
关键点是extends TimerTask. 并且复写run()方法.
然后再applicationContext.xml中配置如下
Java代码 1.<!--spring 定时器 -->
2.<bean id="quartzClock"
3. class="org.springframework.scheduling.quartz.JobDetailBean">
4. <property name="jobClass">
5. <value>com.tiros.caredog.cd.util.ReportTask</value>
6. </property>
7.</bean>
8.
9.<bean id="cronQuartzClock"
10. class="org.springframework.scheduling.quartz.CronTriggerBean">
11. <property name="jobDetail" ref="quartzClock"></property>
12. <property name="cronExpression">
13. <value>0 1,2,3,4,5,6,7,8,9,10 1 * * ?</value>
14. <!-- 每天凌晨1点1分到1点10分自动备份 -->
15. <!-- 秒 份 时 日 月 星期 年 -->
16. <!-- 区间 *通配/每天/月/年 ?
17. -->
18. </property>
19.</bean>
20.
21.<bean
22. class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
23. <property name="triggers">
24. <list>
25. <ref bean="cronQuartzClock" />
26. </list>
27. </property>
28.</bean>
1957

被折叠的 条评论
为什么被折叠?



