spring 定时任务

Posted Django_1987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 定时任务相关的知识,希望对你有一定的参考价值。

博文摘自本人项目


1. code ,定时执行的方法

package com.thunisoft.webservice.service;


import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.remoting.jaxrpc.ServletEndpointSupport;
import com.thunisoft.summer.util.cache.CacheManager;
import com.thunisoft.webservice.cache.cacheManager;
import com.thunisoft.webservice.dao.Ify2000;
import com.thunisoft.webservice.daoImpl.Fy2000Impl;
import com.thunisoft.webservice.service.util.getBean;

public class Fy2000Service  extends ServletEndpointSupport  implements IFy2000Service

private Ify2000 fyimpl;
private Logger log = Logger.getLogger(Fy2000Service.class);

private String queryParams;//参数

/**
* 将客户端请求的查询结果返回
* @return
*/
public  String ajNum(String queryParam)
Map<String,String> csmap = new HashMap<String,String>();
Map<Integer,Integer> jcmap = new HashMap<Integer,Integer>();
Map<Integer,Integer> xsmap = new HashMap<Integer,Integer>();
Map<Integer,Integer> yjmap = new HashMap<Integer,Integer>();
Map<Integer,Integer> wjmap = new HashMap<Integer,Integer>();
ApplicationContext springcontext = getBean.getYouBean();
fyimpl= (Fy2000Impl) springcontext.getBean("fy2000");
csmap = fyimpl.readXml(queryParam);
String kssj = csmap.get("kssj");
String jssj = csmap.get("jssj");
jcmap = fyimpl.getJcMap(kssj,jssj);
xsmap = fyimpl.getXsMap(kssj, jssj);
yjmap = fyimpl.getYjMap(kssj, jssj);   
wjmap = fyimpl.getWjMap(kssj, jssj);
Map<Integer,Integer> fymap=null;
try
fymap = ((cacheManager)CacheManager.getCache("fycache")).getFyvalueMap();
catch (Exception e)
log.error("获取法院缓存数据失败",e);

StringBuffer sb  = new StringBuffer();
sb.append("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("<result>");
for (Entry<Integer, Integer> enter:fymap.entrySet())
Integer fydm = enter.getKey();
if(null!=fydm)
Integer fyid = enter.getValue();
sb.append("<fy>");
sb.append("<fybh>"+fydm+"</fybh>");
sb.append("<xsajs>"+xsmap.get(fyid)+"</xsajs>");
sb.append("<yjajs>"+yjmap.get(fyid)+"</yjajs>");
sb.append("<wjajs>"+wjmap.get(fyid)+"</wjajs>");
sb.append("<jcajs>"+jcmap.get(fyid)+"</jcajs>");
sb.append("</fy>");


sb.append("</result>");

return sb.toString();

public Ify2000 getFyimpl()
return fyimpl;

public void setFyimpl(Ify2000 fyimpl)
this.fyimpl = fyimpl;


public void backFyajxx()

String queryParam = this.queryParam;

ajNum(queryParam);

public String queryParam()

return queryParam;

public void setQueryParam(String queryParam)

this.queryParam = queryParam;








2. applicationContext.xml 配置文件

<!-- 实现类 -->
<bean id = "fy2000" class="com.thunisoft.webservice.daoImpl.Fy2000Impl">
<property name="dataSource">
<ref bean="dataSource"></ref>
</property> 
</bean>
<!-- 服务类 -->
<bean id = "fy2000service" class="com.thunisoft.webservice.service.Fy2000Service">
<property name="fyimpl">
<ref bean="fy2000"></ref>
</property>

<property name ="queryParam">

<value>$service.queryParam</value>
</bean>

<!-- 定时任务 service-->
<bean id ="fy2000ServiceTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="fy2000service"></property>

<!--根据spring定时任务规范,定时执行方法应为无参无返回值方法! -->

<property name="targetMethod" value="backFyajxx"></property>
</bean>
<bean id ="fy2000ServiceTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="fy2000ServiceTask"></ref>
</property>
<property name="cronExpression">
<value>$service.cron</value>
</property>
</bean>

<!-- 定时任务单 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="fy2000ServiceTrigger" />
            </list>
        </property>
    </bean>


3.配置文件 config.properties   

#webservice接口参数
service.queryParam=select * from .....
#司法公开今日动态cron表达式,每天早7点到晚7点每小时执行一次
service.cron=0 0 0 * * ?


4.所需jar包

quartz-1.6.*.jar 

spring-2.*.jar

.......

摘自网络;

cron表达式详解 

一个cron表达式有至少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下: 
1.秒(0-59) 
2.分钟(0-59) 
3.小时(0-23) 
4.月份中的是期(1-31) 
5.月份(1-12或SUN-DEC) 
6.星期中的日期(1-7或SUN-SAT) 
7.年份(1970-2099) 
例子: 
0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点 
0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟 
30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时 
0 0 8-5 ? * MON-FRI 每个工作日的工作时间 
- 区间 
* 通配符 
? 你不想设置那个字段


以上是关于spring 定时任务的主要内容,如果未能解决你的问题,请参考以下文章

spring怎么设置定时任务为每天凌晨2点执行和每小时执行一次?

Spring定时任务为啥没有执行

Spring定时任务为啥没有执行

spring定时任务时间表达式如何写? 每周星期三晚上8点执行

Spring 定时任务 cron 表达式

Spring Boot 定时任务