Spring定时实际项目运用

applicationContext-timer.xml

[html] view plain copy

 print?

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">  
  3. <beans>  
  4.       
  5.     <!-- 微博数据抓取 -->  
  6.     <bean id="weiboManager" class="com.wiseweb.pom.service.weibo.WeiboStatusManager"></bean>  
  7.     <bean id="usersManager" class="com.wiseweb.pom.service.weibo.WeiboUsersManager"></bean>  
  8.     <bean id="assignUsersManager" class="com.wiseweb.pom.service.weibo.WeiboAssignUsersManager"></bean>  
  9.     <bean id="ntManager" class="com.wiseweb.pom.service.tracking.NegativeTrackingManager"></bean>  
  10.     <bean id="classPersonalManager" class="com.wiseweb.pom.service.classify.ClassPersonalManager"></bean>  
  11.     <bean id="searchManager" class="com.wiseweb.pom.service.docInfo.SearchManager"></bean>  
  12.     <bean id="cacheCountManager" class="com.wiseweb.pom.service.cache.CacheCountManager"></bean>  
  13.     <bean id="docInfoManager" class="com.wiseweb.pom.service.docInfo.DocInfoManager"></bean>  
  14.     <!-- 微博数据抓取 -->  
  15.     <bean id="weiboCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
  16.         <property name="jobClass" value="com.wiseweb.util.timer.SinaWeiboCrawTimer"></property>  
  17.         <property name="jobDataAsMap">  
  18.             <map>  
  19.                 <entry key="weiboManager" value-ref="weiboManager"></entry>  
  20.                 <entry key="usersManager" value-ref="usersManager"></entry>  
  21.                 <entry key="assignUsersManager" value-ref="assignUsersManager"></entry>  
  22.                 <entry key="ntManager" value-ref="ntManager"></entry>  
  23.             </map>  
  24.         </property>  
  25.     </bean>  
  26.     <!-- 微博数据抓取 -->  
  27.     <bean id="weiboCrawTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  28.         <property name="jobDetail" ref="weiboCrawJob"></property>  
  29.         <!-- 30分运行一次; -->  
  30.         <property name="cronExpression" value="0 0/30 * * * ?" />  
  31.     </bean>  
  32.       
  33.     <!-- 个人keyword提取 -->  
  34.     <bean id="personalCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
  35.         <property name="jobClass" value="com.wiseweb.util.timer.PersonalCrawTimer"></property>  
  36.         <property name="jobDataAsMap">  
  37.             <map>  
  38.                 <entry key="classPersonalManager" value-ref="classPersonalManager"></entry>  
  39.                 <entry key="searchManager" value-ref="searchManager"></entry>  
  40.                 <entry key="cacheCountManager" value-ref="cacheCountManager"></entry>  
  41.             </map>  
  42.         </property>  
  43.     </bean>  
  44.     <!-- 个人keyword提取 -->  
  45.     <bean id="personalTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  46.         <property name="jobDetail" ref="personalCrawJob"></property>  
  47.         <!-- 30分运行一次; -->  
  48.         <property name="cronExpression" value="1 0 0 * * ?" />  
  49.     </bean>  
  50.       
  51.     <!-- 地图图表信息存储 -->  
  52.     <bean id="mapchartCrawJob" class="org.springframework.scheduling.quartz.JobDetailBean">  
  53.         <property name="jobClass" value="com.wiseweb.util.timer.MapChartCrawTimer"></property>  
  54.         <property name="jobDataAsMap">  
  55.             <map>  
  56.                 <entry key="docInfoManager" value-ref="docInfoManager"></entry>  
  57.                 <entry key="cacheCountManager" value-ref="cacheCountManager"></entry>  
  58.                 <entry key="searchManager" value-ref="searchManager"></entry>  
  59.             </map>  
  60.         </property>  
  61.     </bean>  
  62.     <!-- 地图图表信息存储 -->  
  63.     <bean id="mapchartTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  64.         <property name="jobDetail" ref="mapchartCrawJob"></property>  
  65.         <property name="cronExpression" value="0 10 0 * * ?" />  
  66.         <!--<property name="cronExpression" value="0 0/1 * * * ?" /> 
  67.     --></bean>  
  68.       
  69.     <bean id="scheduledFactoryBean"  
  70.         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  71.         <property name="triggers">  
  72.             <list>  
  73.                  <ref bean="weiboCrawTrigger"/>   
  74.                  <ref bean="personalTrigger"/>    
  75.                  <ref bean="mapchartTrigger"/>  
  76.             </list>  
  77.         </property>  
  78.     </bean>  
  79. </beans>        

给出某一个定时类的写法

[html] view plain copy

 print?

  1. package com.wiseweb.util.timer;  
  2.   
  3. import java.text.ParseException;  
  4. import java.text.SimpleDateFormat;  
  5. import java.util.ArrayList;  
  6. import java.util.Calendar;  
  7. import java.util.List;  
  8.   
  9. import org.quartz.JobExecutionContext;  
  10. import org.quartz.JobExecutionException;  
  11. import org.springframework.scheduling.quartz.QuartzJobBean;  
  12.   
  13. import com.wiseweb.pom.entity.CacheCount;  
  14. import com.wiseweb.pom.entity.ClassConfigPersonal;  
  15. import com.wiseweb.pom.entity.ClassTreePersonal;  
  16. import com.wiseweb.pom.entity.ClassTreePersonalKeyword;  
  17. import com.wiseweb.pom.entity.ClassifyPersonalRole;  
  18. import com.wiseweb.pom.entity.SearchInfo;  
  19. import com.wiseweb.pom.service.cache.CacheCountManager;  
  20. import com.wiseweb.pom.service.classify.ClassPersonalManager;  
  21. import com.wiseweb.pom.service.docInfo.SearchManager;  
  22.   
  23. public class PersonalCrawTimer extends QuartzJobBean{  
  24.     private SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd") ;  
  25.     private SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;  
  26.     private ClassPersonalManager classPersonalManager ;  
  27.     private SearchManager searchManager ;  
  28.     private CacheCountManager cacheCountManager ;  
  29.     private Integer order = 1; // 按时间排序  
  30.     private String queryValue = "";  
  31.     @Override  
  32.     protected void executeInternal(JobExecutionContext arg0)  
  33.             throws JobExecutionException {  
  34.         System.out.println("*************执行关键字定时开始***********");  
  35.         flushPersonal() ;  
  36.         System.out.println("*************执行关键字定时结束***********");  
  37.     }  
  38.       
  39.     public void flushPersonal() {  
  40.         List<ClassConfigPersonal> ccp = this.cacheCountManager.getAllConfig() ;  
  41.         //设置时间戳  
  42.         Long nowTime = System.currentTimeMillis()/1000 ;  
  43.           
  44.         for(ClassConfigPersonal c : ccp) {  
  45.             Long userId = c.getUserId() ;  
  46.             List<ClassTreePersonal> resultObject = new ArrayList<ClassTreePersonal>() ;  
  47.                 //根据用户id获取到classConfigPersonal集合  
  48.                List<ClassConfigPersonal> ccps = this.classPersonalManager.findAll(userId);  
  49.                for(int i=0;i<ccps.size();i++) {  
  50.                    //个人配置id  
  51.                    Long classConfigId = ccps.get(i).getId() ;   
  52.                    //个人配置id & 用户id找到personalRole  
  53.                    List<ClassifyPersonalRole> classifyRoles = this.classPersonalManager  
  54.                             .findByClassConfigRole(userId, classConfigId);  
  55.                    List<ClassTreePersonal> classTreePersonals = this.classPersonalManager  
  56.                             .findAllByClassConfigId(classConfigId);  
  57.                      
  58.                    for (int k = 0; k < classTreePersonals.size(); k++) {  
  59.                         ClassTreePersonal ctn = classTreePersonals.get(k);  
  60.                         for (int j = 0; j < classifyRoles.size(); j++) {  
  61.                             if (ctn.getId().equals(  
  62.                                     classifyRoles.get(j).getTreeNodeId())) {  
  63.                                 resultObject.add(ctn) ;  
  64.                             }  
  65.                         }  
  66.                     }  
  67.                }  
  68.             int size = resultObject.size() ;  
  69.             for(int i=0;i<size;i++) {  
  70.                 String name = resultObject.get(i).getName() ;  
  71.                 Long id = resultObject.get(i).getId() ;  
  72.                 ClassTreePersonalKeyword ctnk2 = this.classPersonalManager.findKeywordBy("nodeNid",Integer.parseInt(id+""));  
  73.                 SearchInfo searchInfo = ctnk2SearchInfo(ctnk2) ;  
  74.                 //传入keyword和用户id执行入库操作  
  75.                 try {  
  76.                     executeSql(name, searchInfo, userId) ;  
  77.                 } catch (ParseException e) {  
  78.                     e.printStackTrace();  
  79.                 }  
  80.             }  
  81.         }  
  82.         System.out.println("________________________");  
  83.         System.out.println("执行操作已完成,进行删除旧数据操作...");  
  84.         //执行完后执行删除旧数据操作  
  85.         List<Long> deleteIds = this.cacheCountManager.getAllIdForDelete(nowTime) ;  
  86.         this.cacheCountManager.delete(deleteIds) ;  
  87.         System.out.println("数据删除已完成...");  
  88.     }  
  89.       
  90.     public void executeSql(String keywordName, SearchInfo searchInfo, Long userId) throws ParseException {  
  91.           
  92.         for(int i=30;i>0;i--) {  
  93.             String riqi = getStrDate(String.valueOf(i)) ;  
  94.             long start = sdf1.parse(riqi).getTime() ;  
  95.             long end = sdf2.parse(riqi + " 23:59:59").getTime() ;  
  96.             int count = this.searchManager.search(searchInfo,start/1000,end/1000);  
  97.             CacheCount cc = new CacheCount() ;  
  98.             cc.setkUid(userId) ;  
  99.             cc.setkName(keywordName) ;  
  100.             cc.setkCount(count + "") ;  
  101.             cc.setkTime(riqi) ;  
  102.             cc.setkInserttime(System.currentTimeMillis()/1000) ;  
  103.             this.cacheCountManager.inStorage(cc) ;  
  104.             System.out.println(keywordName + "_" + riqi + "已入库...");  
  105.         }  
  106.     }  
  107.     private SearchInfo ctnk2SearchInfo(ClassTreePersonalKeyword ctnk2) {  
  108.         SearchInfo si = new SearchInfo() ;  
  109.         si.setOrder(this.order);  
  110.         if (ctnk2.getQueryAnd() != null  
  111.                 && !"".equals(ctnk2.getQueryAnd())) {  
  112.             si.setQueryValue(ctnk2.getQueryAnd() + " "  
  113.                     + this.queryValue);  
  114.         }  
  115.         if (ctnk2.getQueryOr() != null  
  116.                 && !"".equals(ctnk2.getQueryOr())) {  
  117.             si.setOr(ctnk2.getQueryOr());  
  118.         }  
  119.         if (ctnk2.getQueryNot() != null  
  120.                 && !"".equals(ctnk2.getQueryNot())) {  
  121.             si.setNot(ctnk2.getQueryNot());  
  122.         }  
  123.         return si ;  
  124.     }  
  125.       
  126.     public String getStrDate(String backDay) {  
  127.         Calendar calendar = Calendar.getInstance() ;  
  128.         calendar.add(Calendar.DATE, Integer.parseInt("-" + backDay));  
  129.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ;  
  130.         String back = sdf.format(calendar.getTime()) ;  
  131.         return back ;  
  132.     }  
  133.   
  134.     public ClassPersonalManager getClassPersonalManager() {  
  135.         return classPersonalManager;  
  136.     }  
  137.   
  138.     public void setClassPersonalManager(ClassPersonalManager classPersonalManager) {  
  139.         this.classPersonalManager = classPersonalManager;  
  140.     }  
  141.   
  142.     public Integer getOrder() {  
  143.         return order;  
  144.     }  
  145.   
  146.     public void setOrder(Integer order) {  
  147.         this.order = order;  
  148.     }  
  149.   
  150.     public String getQueryValue() {  
  151.         return queryValue;  
  152.     }  
  153.   
  154.     public void setQueryValue(String queryValue) {  
  155.         this.queryValue = queryValue;  
  156.     }  
  157.   
  158.     public SearchManager getSearchManager() {  
  159.         return searchManager;  
  160.     }  
  161.   
  162.     public void setSearchManager(SearchManager searchManager) {  
  163.         this.searchManager = searchManager;  
  164.     }  
  165.   
  166.     public CacheCountManager getCacheCountManager() {  
  167.         return cacheCountManager;  
  168.     }  
  169.   
  170.     public void setCacheCountManager(CacheCountManager cacheCountManager) {  
  171.         this.cacheCountManager = cacheCountManager;  
  172.     }  
  173. }  
时间: 2024-07-29 02:24:44

Spring定时实际项目运用的相关文章

spring 和hibernate项目制作可执行的jar包

spring 和hibernate项目制作可执行的jar包 如何把spring和hibernate项目制作可运行的jar包呢? 就是在命令行中运行 Java -jar  xxx.jar 就可以运行java程序.例如  我的这个项目使用了hibernate和spring,不是web项目. 构建工具:maven IDE:eclipse 目录结构如下:     上图中beans.xml是spring的配置文件,内容如下:   Xml代码   <?xml version="1.0" en

浏览器-为什么访问不了spring mvc的项目工程,连静态jsp页面也跳不了。

问题描述 为什么访问不了spring mvc的项目工程,连静态jsp页面也跳不了. 刚部署的项目工程,以前别人已经做好了,部署后tomcat不报错,但浏览器就是找不到路径,一直报404,这是为什么? 解决方案 你的问题太抽象了,想帮你都力不从心的,建议你 1.看tomcat是否启动 2.如果启动访问一下项目的index.jsp---一般过滤器都不会拦截这个页面的 3.如何能访问的话,就应该是你配置文件的问题了 如果还有文件,建议你把tomcat的日志粘出来帮你看看, 解决方案二: 哪位大神帮帮我

深入实践Spring Boot1.2.2 使用Spring Initializr新建项目

1.2.2 使用Spring Initializr新建项目 新建一个Spring Boot项目,也可以使用Spring Initializr的方式,这种方式很简单,如图1-10所示.注意Initializr Service URL为https://start.spring.io,这将会连接网络,以查询Spring Boot的当前可用版本和组件列表.使用这种方式新建项目大体上也需要三个步骤. 1.?选择类型 可以使用默认选项,注意Type为Maven Project,Java Version为1.

springcloud微服务一:spring boot基础项目搭建及问题处理

公司接下来某个项目打算使用微服务架构,使用springcloud以及它集成的一些相关项目,因此虽然在其他方面的很多技术上还感觉急需提高,却又不得不以工作为重,先放下其他来了解一下这方面的技术. 一番了解后发现,spring cloud是建立在spring boot的基础上的,而之前虽然听说过,也随便看了一下spring boot,却没有真正使用,因此还必须先花时间学一下spring boot. spring boot的理念是"习惯优于配置",我个人的理解就是尽量减少开发过程中手动的sp

spring quartz在项目发布后无法...[

问题描述 spring quartz在项目发布后无法...[ 解决方案 hibernate HQL能够使用数据库表字段进行查询?JAVA 怎样解决程序卡死, 内存爆满的问题?spring quartz在项目发布后无法...[

spring mvc-SpringMVC web项目中如何引入js,css等文件

问题描述 SpringMVC web项目中如何引入js,css等文件 在springmvc的web项目中,如何在html文件中引入本地的jscss等文件,试了很多种方法,发现路经都不对,都报404 Notfound的错.项目的目录结构:同时在springmvc-servlet.xml中添加了配置:在index.html中如此引用js: 然后每次都说找不到这个js文件. 解决方案 web项目js css静态文件缓存解决引入外部css ,js文件 解决方案二: 貌似要放在WebRoot底下新建一个文

求助 spring tomcat-Spring整合项目部署到服务器运行时出现的错误

问题描述 Spring整合项目部署到服务器运行时出现的错误 各位大神帮帮忙,我在把项目部署到tomcat时,运行服务器出现了这样的问题: 七月 04, 2014 4:23:45 下午 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring FrameworkServlet 'dispatcher' [2014-07-04 16:23:45,162 920] [INFO ] [localhost-startSt

Spring MVC 3 项目中的URL如何导出

问题描述 项目采用Spring MVC3实现的RESTFUL风格的访问模式,我想将所有通过@RequestMapping注入的URL导出,在Spring Tools中可以全部查看到项目中的所有URL(入下图),但是没有导出功能.请问各位有没有什么好的处理方式? 解决方案 要不就自己写一个?写一个servlet继承DispatcherServlet,在初始化方法中添加代码,循环DispatcherServlet中的private List<HandlerMapping> handlerMappi

有木有Struts2+hibernate+spring+mysql的项目源码?求!!!

问题描述 如题!!!要求项目能运行无误...数据库有创建数据库文件...如果谁有请联系我..QQ:506846716:先谢谢了!