在实际项目开发过程中,我们经常会遇到在一个特定的时间处理特定的事情,比如,在每个星期天的晚上11点运算MRP。这里我们就可以用到Quartz的定时执行功能。在本例子中,我们只是简单的展示在特定的时间内,向数据库insert
一条记录。
一、准备工作。
1、下载 Quartz1.6
https://quartz.dev.java.net/files/documents/1267/43545/quartz-1.6.0.zip
二、安装到Lib目录下
1、
把quartz-1.6.0.jar 从quartz-1.6.0.zip解压到D盘根目录。
2、
进入Appfuse的项目目录,比如: D:\myproject
3、执行命令:mvn install:install-file
-Dfile=quartz-1.6.0.jar -DgroupId=quartz
-DartifactId=quartz -Dversion=1.6.0 -Dpackaging=jar –Dfile=D:/quartz-1.6.0.jar
三、 编写具体的Bean和方法
public class SyslogManagerImpl extends GenericManagerImpl<Syslog, Long> implements SyslogManager {
SyslogDao syslogDao;
public SyslogManagerImpl(SyslogDao syslogDao) {
super(syslogDao);
this.syslogDao = syslogDao;
}
public void writesyslog(){
Syslog syslog = new Syslog();
syslog.setModel("test");
Date optime = new Date();
syslog.setOpTime(optime);
syslog.setUserid(new Long(1));
syslogDao.writeLog(syslog);
}
}
四、配置Spring的ApplicationContext-Services.xml
<!-- =================================================================== -->
<!-- Quartz configuration -->
<!-- =================================================================== -->
<!-- Schedule task configuration -->
<bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="syslogManager"/>
<property name="targetMethod" value="writesyslog"/>
<property name="concurrent" value="false" />
</bean>
<!—这里定义每小时的第2分种和第3分种此行方法-->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="methodInvokingJobDetail"/>
<property name="cronExpression" value="0 2,3 * * * ?"/>
</bean>
<bean id="quartzCronBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
<property name="triggers">
<list>
<ref bean="cronTrigger"/>
</list>
</property>
</bean>
注意:这里的设置lazy-init="false",否则定时的方法不会被执行。
参考:
http://java.chinaitlab.com/advance/743501_2.html
http://flytogether.javaeye.com/blog/64909