applicationContext-timer.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 微博数据抓取 -->
<bean id="weiboManager" class="com.wiseweb.pom.service.weibo.WeiboStatusManager"></bean>
<bean id="usersManager" class="com.wiseweb.pom.service.weibo.WeiboUsersManager"></bean>
<bean id="assignUsersManager" class="com.wiseweb.pom.service.weibo.WeiboAssignUsersManager"></bean>
<bean id="ntManager" class="com.wiseweb.pom.service.tracking.NegativeTrackingManager"></bean>
<bean id="classPersonalManager" class="com.wiseweb.pom.service.classify.ClassPersonalManager"></bean>
<bean id="searchManager" class="com.wiseweb.pom.service.docInfo.SearchManager"></bean>
<bean id="cacheCountManager" class="com.wiseweb.pom.service.cache.CacheCountManager"></bean>
<bean id="docInfoManager" class="com.wiseweb.pom.service.docInfo.DocInfoManager"></bean>
<!-- 微博数据抓取 -->
<bean id="weiboCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.wiseweb.util.timer.SinaWeiboCrawTimer"></property>
<property name="jobDataAsMap">
<map>
<entry key="weiboManager" value-ref="weiboManager"></entry>
<entry key="usersManager" value-ref="usersManager"></entry>
<entry key="assignUsersManager" value-ref="assignUsersManager"></entry>
<entry key="ntManager" value-ref="ntManager"></entry>
</map>
</property>
</bean>
<!-- 微博数据抓取 -->
<bean id="weiboCrawTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="weiboCrawJob"></property>
<!-- 30分运行一次; -->
<property name="cronExpression" value="0 0/30 * * * ?" />
</bean>
<!-- 个人keyword提取 -->
<bean id="personalCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.wiseweb.util.timer.PersonalCrawTimer"></property>
<property name="jobDataAsMap">
<map>
<entry key="classPersonalManager" value-ref="classPersonalManager"></entry>
<entry key="searchManager" value-ref="searchManager"></entry>
<entry key="cacheCountManager" value-ref="cacheCountManager"></entry>
</map>
</property>
</bean>
<!-- 个人keyword提取 -->
<bean id="personalTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="personalCrawJob"></property>
<!-- 30分运行一次; -->
<property name="cronExpression" value="1 0 0 * * ?" />
</bean>
<!-- 地图图表信息存储 -->
<bean id="mapchartCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.wiseweb.util.timer.MapChartCrawTimer"></property>
<property name="jobDataAsMap">
<map>
<entry key="docInfoManager" value-ref="docInfoManager"></entry>
<entry key="cacheCountManager" value-ref="cacheCountManager"></entry>
<entry key="searchManager" value-ref="searchManager"></entry>
</map>
</property>
</bean>
<!-- 地图图表信息存储 -->
<bean id="mapchartTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="mapchartCrawJob"></property>
<property name="cronExpression" value="0 10 0 * * ?" />
<!--<property name="cronExpression" value="0 0/1 * * * ?" />
--></bean>
<bean id="scheduledFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="weiboCrawTrigger"/>
<ref bean="personalTrigger"/>
<ref bean="mapchartTrigger"/>
</list>
</property>
</bean>
</beans>
给出某一个定时类的写法
package com.wiseweb.util.timer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import com.wiseweb.pom.entity.CacheCount;
import com.wiseweb.pom.entity.ClassConfigPersonal;
import com.wiseweb.pom.entity.ClassTreePersonal;
import com.wiseweb.pom.entity.ClassTreePersonalKeyword;
import com.wiseweb.pom.entity.ClassifyPersonalRole;
import com.wiseweb.pom.entity.SearchInfo;
import com.wiseweb.pom.service.cache.CacheCountManager;
import com.wiseweb.pom.service.classify.ClassPersonalManager;
import com.wiseweb.pom.service.docInfo.SearchManager;
public class PersonalCrawTimer extends QuartzJobBean{
private SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd") ;
private SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
private ClassPersonalManager classPersonalManager ;
private SearchManager searchManager ;
private CacheCountManager cacheCountManager ;
private Integer order = 1; // 按时间排序
private String queryValue = "";
@Override
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
System.out.println("*************执行关键字定时开始***********");
flushPersonal() ;
System.out.println("*************执行关键字定时结束***********");
}
public void flushPersonal() {
List<ClassConfigPersonal> ccp = this.cacheCountManager.getAllConfig() ;
//设置时间戳
Long nowTime = System.currentTimeMillis()/1000 ;
for(ClassConfigPersonal c : ccp) {
Long userId = c.getUserId() ;
List<ClassTreePersonal> resultObject = new ArrayList<ClassTreePersonal>() ;
//根据用户id获取到classConfigPersonal集合
List<ClassConfigPersonal> ccps = this.classPersonalManager.findAll(userId);
for(int i=0;i<ccps.size();i++) {
//个人配置id
Long classConfigId = ccps.get(i).getId() ;
//个人配置id & 用户id找到personalRole
List<ClassifyPersonalRole> classifyRoles = this.classPersonalManager
.findByClassConfigRole(userId, classConfigId);
List<ClassTreePersonal> classTreePersonals = this.classPersonalManager
.findAllByClassConfigId(classConfigId);
for (int k = 0; k < classTreePersonals.size(); k++) {
ClassTreePersonal ctn = classTreePersonals.get(k);
for (int j = 0; j < classifyRoles.size(); j++) {
if (ctn.getId().equals(
classifyRoles.get(j).getTreeNodeId())) {
resultObject.add(ctn) ;
}
}
}
}
int size = resultObject.size() ;
for(int i=0;i<size;i++) {
String name = resultObject.get(i).getName() ;
Long id = resultObject.get(i).getId() ;
ClassTreePersonalKeyword ctnk2 = this.classPersonalManager.findKeywordBy("nodeNid",Integer.parseInt(id+""));
SearchInfo searchInfo = ctnk2SearchInfo(ctnk2) ;
//传入keyword和用户id执行入库操作
try {
executeSql(name, searchInfo, userId) ;
} catch (ParseException e) {
e.printStackTrace();
}
}
}
System.out.println("________________________");
System.out.println("执行操作已完成,进行删除旧数据操作...");
//执行完后执行删除旧数据操作
List<Long> deleteIds = this.cacheCountManager.getAllIdForDelete(nowTime) ;
this.cacheCountManager.delete(deleteIds) ;
System.out.println("数据删除已完成...");
}
public void executeSql(String keywordName, SearchInfo searchInfo, Long userId) throws ParseException {
for(int i=30;i>0;i--) {
String riqi = getStrDate(String.valueOf(i)) ;
long start = sdf1.parse(riqi).getTime() ;
long end = sdf2.parse(riqi + " 23:59:59").getTime() ;
int count = this.searchManager.search(searchInfo,start/1000,end/1000);
CacheCount cc = new CacheCount() ;
cc.setkUid(userId) ;
cc.setkName(keywordName) ;
cc.setkCount(count + "") ;
cc.setkTime(riqi) ;
cc.setkInserttime(System.currentTimeMillis()/1000) ;
this.cacheCountManager.inStorage(cc) ;
System.out.println(keywordName + "_" + riqi + "已入库...");
}
}
private SearchInfo ctnk2SearchInfo(ClassTreePersonalKeyword ctnk2) {
SearchInfo si = new SearchInfo() ;
si.setOrder(this.order);
if (ctnk2.getQueryAnd() != null
&& !"".equals(ctnk2.getQueryAnd())) {
si.setQueryValue(ctnk2.getQueryAnd() + " "
+ this.queryValue);
}
if (ctnk2.getQueryOr() != null
&& !"".equals(ctnk2.getQueryOr())) {
si.setOr(ctnk2.getQueryOr());
}
if (ctnk2.getQueryNot() != null
&& !"".equals(ctnk2.getQueryNot())) {
si.setNot(ctnk2.getQueryNot());
}
return si ;
}
public String getStrDate(String backDay) {
Calendar calendar = Calendar.getInstance() ;
calendar.add(Calendar.DATE, Integer.parseInt("-" + backDay));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;
String back = sdf.format(calendar.getTime()) ;
return back ;
}
public ClassPersonalManager getClassPersonalManager() {
return classPersonalManager;
}
public void setClassPersonalManager(ClassPersonalManager classPersonalManager) {
this.classPersonalManager = classPersonalManager;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
public String getQueryValue() {
return queryValue;
}
public void setQueryValue(String queryValue) {
this.queryValue = queryValue;
}
public SearchManager getSearchManager() {
return searchManager;
}
public void setSearchManager(SearchManager searchManager) {
this.searchManager = searchManager;
}
public CacheCountManager getCacheCountManager() {
return cacheCountManager;
}
public void setCacheCountManager(CacheCountManager cacheCountManager) {
this.cacheCountManager = cacheCountManager;
}
}