资讯首页要1个小时静态化一次,之前做法很龌龊,今天用了spring中来配置quartz。看一下简单例子吧:
- <!-- quartz配置 -->
- <bean id="indexTask" class="com.tsts168.sunyanan.app.index.support.IndexTask"></bean>
- <!-- 定义调用对象和调用对象的方法 -->
- <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <!-- 调用的类 -->
- <property name="targetObject">
- <ref bean="indexTask"/>
- </property>
- <!-- 调用类中的方法 -->
- <property name="targetMethod">
- <value>run</value>
- </property>
- <property name="concurrent" value="false" />
- </bean>
- <!-- 定义触发时间 -->
- <bean id="doTime" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
- <property name="jobDetail">
- <ref bean="jobtask"/>
- </property>
- <!-- repeat every 1小时 3600000 -->
- <property name="repeatInterval" value="3600000" />
- </bean>
- <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
- <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list>
- <ref bean="doTime"/>
- </list>
- </property>
- </bean>
- package com.tsts168.sunyanan.app.index.support;
- import java.util.Date;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.tsts168.sunyanan.app.common.util.HtmlUtil;
- import com.tsts168.sunyanan.app.index.manager.IndexManager;
- /*
- * 首页2小时生成一次的调度
- *
- */
- public class IndexTask {
- private Log log = LogFactory.getLog(IndexTask.class);
- @SuppressWarnings("deprecation")
- public void run() {
- // 生成静态页面
- ApplicationContext scontext = new ClassPathXmlApplicationContext("applicationContext.xml");
- IndexManager manager = (IndexManager) scontext.getBean("indexManager");
- Object obj = manager.service(null);
- HtmlUtil hutil = new HtmlUtil();
- hutil.writeIndexHtml(System.getProperty("tsts.root") + "/template", System.getProperty("tsts.root"), obj);
- log.warn("生成首页at: " + (new Date()).toLocaleString());
- }
- }
就不多做介绍了,很明了