简单例子可参考

http://yangpanwww.iteye.com/blog/797563

http://liuzidong.iteye.com/blog/1118992

关于时间配置可参考另一篇http://www.cnblogs.com/stit/p/4013398.html

我的项目的应用

1 knowledge-schedule.xml 不要忘了在spring总配置文件中引入

调度工厂没有加lazy-init="false"

<!--  总管理类如果将lazy-init='false'那么容器启动就会执行调度程序   -->

<bean id="startQuertz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false" >

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="threadPoolTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5"/>
<property name="keepAliveSeconds" value="200"/>
<property name="maxPoolSize" value="50"/>
<property name="queueCapacity" value="60"/>
</bean> <!-- 排行统计start -->
<bean id="methodSchedulerFactory_StatisticsInfoHotReply"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="rankTask" />
<property name="targetMethod" value="startStatistics" />
<property name="arguments" value="info" />
</bean> <bean id="cronTriggerBean_StatisticsInfoHotReply" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="methodSchedulerFactory_StatisticsInfoHotReply" />
<property name="cronExpression" value="* * 2 * * ?" /> <!--每晚2点一次 -->
</bean>
<!-- 排行统计end --> <!-- 栏目定时统计订阅数开始 -->
<bean id="columnJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="columnTimerTasker" />
<property name="targetMethod" value="execute" />
<!--将并发设置为false-->
<property name="concurrent" value="false" />
</bean> <bean id="columnJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="columnJobDetail" />
<!--表达式,每30分钟 执行一次 -->
<property name="cronExpression" value="0 7/30 * * * ?" />
</bean>
<!-- 栏目定时统计订阅数结束 --> <!--调度工厂 -->
<bean id="SpringJobSchedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerBean_StatisticsInfoHotReply" />
<ref bean="columnJobTrigger" />
</list>
</property>
</bean>
</beans>

2 ColumnTimerTasker

package com.ginkgocap.ywxt.knowledge.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; import javax.annotation.Resource; import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import com.ginkgocap.ywxt.knowledge.entity.Column;
import com.ginkgocap.ywxt.knowledge.mapper.ColumnMapper;
import com.ginkgocap.ywxt.knowledge.service.ColumnService;
import com.ginkgocap.ywxt.knowledge.service.ColumnSubscribeService; @Component("columnTimerTasker")
public class ColumnTimerTasker { @Resource
ColumnService cs;
@Resource
ColumnSubscribeService subcs;
@Autowired
ColumnMapper columnMapper; boolean b=true; public void execute() throws JobExecutionException { SimpleDateFormat f=new SimpleDateFormat("E yyyy-MM-dd HH:mm:ss");
Date date=new Date(); System.out.println("ColumnTimerTasker.execute() "+f.format(date)+" "); // if (!b) {
// return;
// } List<Column> list= cs.queryAll(); for (int i = 0; i < list.size(); i++) {
Column c=list.get(i); long count=subcs.countByKC(c.getId()); // if (count>0) {
// System.out.print(c.getId()+"---");
// System.out.println(count);
// } Column cc=new Column();
cc.setId(c.getId());
cc.setSubscribeCount(count); // if (b) {
// columnMapper.updateByPrimaryKeySelective(cc);
// }else {
// if (count>0) {
// columnMapper.updateByPrimaryKeySelective(cc);
// }
// } if (b||count>0) {
columnMapper.updateByPrimaryKeySelective(cc);
} } if (b) {
b=false;
}
} }

3另一哥们写的RankTask,用到了线程池

package com.ginkgocap.ywxt.knowledge.util;

import java.util.concurrent.Future;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component; /**
* 排行任务
* <p>于2014-9-11 由 创建 </p>
* @author <p>当前负责人 </p>
*
*/
@Component("rankTask")
public class RankTask { @Resource
ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Autowired
RankSchedule schedule; public void startStatistics(String[] obj) {
schedule.setObj(obj);
Future future = threadPoolTaskExecutor.submit(schedule);
// future.get();
}
}

  

package com.ginkgocap.ywxt.knowledge.util;

import java.util.concurrent.Callable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; /**
* 排行计划
* <p>于2014-9-11 由 创建 </p>
* @author <p>当前负责人 </p>
*/
@Component
public class RankSchedule implements Callable<String> { @Autowired
private RankStatistic rs; private String[] obj; public String[] getObj() {
return obj;
} public void setObj(String[] obj) {
this.obj = obj;
} @Override
public String call() throws Exception {
rs.run(obj[0]);
return null;
} }

  

quartz spring的更多相关文章

  1. Quartz —— Spring 环境下的使用

    一.在 Spring 环境下 Quartz 的使用超级简单. 二.具体使用 1.添加对应的 spring-quartz 的配置文件. 2.新建要执行定时任务的目标类和目标方法,不需要继承 Job 接口 ...

  2. Quartz Spring与Spring Task总结

    Spring对Quartz作了一个封装,同时,Spring自己也提供了一个任务定时器(spring-task),现把它总结一下.    对于Quartz,我们使用的时候主要是注重两个方面,一个是定时任 ...

  3. 【59】Quartz+Spring框架详解

    什么是Quartz Quartz是一个作业调度系统(a job scheduling system),Quartz不但可以集成到其他的软件系统中,而且也可以独立运行的:在本文中"job sc ...

  4. 分布式任务调度——quartz + spring + 数据库

        项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻 ...

  5. Quartz Spring分布式集群搭建Demo

    注:关于单节点的Quartz使用在这里不做详细介绍,直接进阶为分布式集群版的 1.准备工作: 使用环境Spring4.3.5,Quartz2.2.3,持久化框架JDBCTemplate pom文件如下 ...

  6. quartz spring 实现动态定时任务

    在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间.频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quar ...

  7. quartz+spring 实现多任务动态定时器问题

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...

  8. quartz spring 时间配置

    关于时间配置, 1前面带0和不带0的区别是???   (开始时间,带0以整点整分整秒开始,不带的以启动时间定时循环??) 比如 0 7/37 * * * ?  表示每个小时的第7分钟开始执行,然后隔三 ...

  9. quartz + spring 配置示例

    <!-- 配置job定时任务类 --> <bean id="triggerCalculateLecturerProfitJob" class="com. ...

随机推荐

  1. servlet中filter(过滤器)的学习使用

    servlet过滤器是小型的web组件,它能够处理传入的请求和传出的响应.Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理r ...

  2. 『安全工具』注入神器SQLMAP

    Pic by Baidu 0x 00 前言 正是SQLMAP这种神器的存在,SQL注入简直Easy到根本停不下来.... PS:国内类似软件也有阿D,明小子,挖掘机,当你用过他们之后你才会发现SQLM ...

  3. 【HDOJ】1011 Starship Troopers

    第一道树形DP.很容易理解. #include <cstdio> #include <cstring> #include <cstdlib> #define MAX ...

  4. Qt入门(1)——初识Qt

    Qt是一个跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta ...

  5. BIND9源码学习笔记1---gdb调试篇

    学习bind9源码之前,首先要知道如何用gdb来调试bind.BIND9的源码我是先看代码弄懂它的架构,像什么event-drive,epoll等, 再去看它的业务流程.看业务流程的时候要追踪它的数据 ...

  6. C - Critical Links - uva 796(求桥)

    题意:有一些网络通过一些线路连接,求关键的连接,也就是桥,如果删除这个链接那么会产生两个子树 分析:注意一下图不是连通图即可 ************************************* ...

  7. JAVA的四种引用,强弱软虚用到的场景

    1.强引用 最常用的引用类型,如Object object = new Object(),只要强引用存在,GC必定 不回收,即使当前内存空间不足,jAVA虚拟机宁愿抛出OutofMemoryError ...

  8. Gson 基础教程 —— 自定义类型适配器(TypeAdapter)

    1,实现一个类型适配器(TypeAdapter) 自定义类型适配器需要实现两个接口: JsonSerializer<T> JsonDeserializer<T> 和两个方法: ...

  9. Wamp集成环境安装

    一.Wamp下载 点我下载WampServer2.1a-x32 二.Wamp安装步骤 三.修改语言为汉语 四.查看测试页面

  10. 【C#基础】HTTP发送POST二进制数据

    //postdata为数组的请求方式 public byte[] POST(string Url, byte[] byteRequest) { byte[] responsebody; HttpWeb ...