在实际项目开发过程中,我们经常会遇到在一个特定的时间处理特定的事情,比如,在每个星期天的晚上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