quartz定时任务,已过期的内容自动下线
概念:
Quartz是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间运行。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数。
框架架构:
简单实例:
maven引用:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
配置文件部分:
需要注意的是,配置文件的部分并不是必须一成不变的,很多地方都有多种写法
<!-- 配置Job类 -->
<bean id="job_1" class="com.wazn.learn.scheduler.Job1" /> <!-- <bean id="jobFactory" class="com.wazn.learn.scheduler.BsQuartzJobFactory"></bean> -->
<bean id="job1"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="job_1" />
<property name="targetMethod" value="doJob1" /><!-- 类中要执行的方法名称 -->
<property name="concurrent" value="false" />
</bean>
<!-- 调度触发器 -->
<bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="job1" />
<property name="cronExpression" value="0/5 * * * * ?" />
</bean>
<!-- 调度工厂 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- <property name="jobFactory" ref="jobFactory"></property> --> <property name="triggers">
<list>
<!-- 触发器列表 有多少配多少-->
<!-- <ref bean="cronTrigger1" /> --> </list>
</property>
</bean>
java定时任务类:
package com.wazn.learn.scheduler; import java.util.Date; public class Job1{ public void doJob1(){
System.out.println("定时任务开始执行:"+new Date().toLocaleString());
}
}
接下来是重头戏,调用service:在调用service的过程中,因为没有在实现的方法上加事务的注解,所以每到调用方法的时候就会报错,后来加了事务就可以正常的调用方法了:
调用service的定时任务类:
package com.wazn.learn.scheduler; import java.util.Date; import org.springframework.beans.factory.annotation.Autowired; import com.wazn.learn.service.teachclass.ClassService;
import com.wazn.learn.service.teachclass.ClassTestService;
import com.wazn.learn.service.teachclass.homework.HomeWorkService; public class Job1{ @Autowired
private ClassTestService testservice; @Autowired
private HomeWorkService homeservice; @Autowired
ClassService classservice; public void doJob1(){
System.err.println("定时任务开始执行:"+new Date().toLocaleString());
//testservice.updateStatus();
//homeservice.updateStatus();
classservice.updataStatusForEndtime();
}
}
方法的实现:
@Override
@Transactional
public int updataStatusForEndtime() { try {
String hql ="update TeachClass set state = false where enddate<=now()";
int i=classdao.execute(hql, null,null);
return i;
}catch(Exception e) {
return 0;
}
}
quartz定时任务,已过期的内容自动下线的更多相关文章
- 搭建maven web项目并配置quartz定时任务【业务:对比数据变化内容】 历程
搭建maven web项目并配置quartz定时任务[业务:对比数据变化内容] 历程2018年03月03日 10:51:10 守望dfdfdf 阅读数:100更多个人分类: 工作 问题编辑版权声明:本 ...
- 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版!
转--http://www.2cto.com/kf/201402/277535.html 万能js实现翻页,动态生成内容自动翻页,兼容各种浏览器(已测试)----神器版! 2014-02-11 ...
- php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理 Joe PHP 2012-01-18 定时任务对于php来说一直都是很多朋友的一个难题,但却很多地方都遇到了.比如说:游戏 ...
- SpringCache自定义过期时间及自动刷新
背景前提 阅读说明(十分重要) 对于Cache和SpringCache原理不太清楚的朋友,可以看我之前写的文章:Springboot中的缓存Cache和CacheManager原理介绍 能关注Spri ...
- Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- Quartz定时任务学习(二)web应用
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- 解决SQL查询总是超时已过期
解决SQL查询总是超时已过期 .在WIN8里提示:OLE DB 或 ODBC 错误 : 查询超时已过期; HYT00 1.由于数据库设计问题造成SQL数据库新增数据时超时 症状: Microso ...
- 对quartz定时任务的初步认识
已经好久没有写技术博文了,今天就谈一谈我前两天自学的quartz定时任务吧,我对quartz定时任务的理解,就是可以设定一个时间,然后呢,在这个时间到的时候,去执行业务逻辑,这是我的简单理解,接下来看 ...
- Spring整合Quartz定时任务 在集群、分布式系统中的应用(Mysql数据库环境)
Spring整合Quartz定时任务 在集群.分布式系统中的应用(Mysql数据库环境) 转载:http://www.cnblogs.com/jiafuwei/p/6145280.html 单个Q ...
随机推荐
- [LeetCode] 29. Divide Two Integers ☆☆
Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...
- JS函数表达的几种写法
arguments数组形式的 用于函数 比如不知道参数有多少个或者不固定那么用到arguments function show(){ //alert(arguments.;length); ale ...
- 解决CodeBlocks无法自动补全的问题
在Deepin下安装的CB,输入printf.scanf的时候不会自动补全,这样就很难受. 解决办法是在Setting -> Editor -> Syntax highlighting - ...
- js_beautifier && css_beautifier for emeditor
// // Unpacker for Dean Edward's p.a.c.k.e.r, a part of javascript beautifier // written by Einar Li ...
- Java 中的几种线程池这么用才是对的
为什么要使用线程池 虽然大家应该都已经很清楚了,但还是说一下.其实归根结底最主要的一个原因就是为了提高性能. 线程池和数据库连接池是同样的道理,数据库连接池是为了减少连接建立和释放带来的性能开销.而线 ...
- python笔记之BytesIO
1. 什么是BytesIO BytesIO与StringIO类似,不同的是StringIO只能存放string,BytesIO是用来存放bytes的,它提供了在内存中读写字节的能力. 即在内存中读写字 ...
- vs2012 error c4996: 'fopen': This function or variable may be unsafe
1>------ 已启动生成: 项目: 20130925, 配置: Debug Win32 ------1> stdafx.cpp1>d:\code\20130925\201309 ...
- [LeetCode] Intersection of Two Linked Lists 两链表是否相交
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- HMM的概述(五个基本元素、两个假设、三个解决的问题)
一.五个基本元素 HMM是个五元组 λ =( S, O , π ,A,B) S:状态值集合,O:观察值集合,π:初始化概率,A:状态转移概率矩阵,B:给定状态下,观察值概率矩阵 二.两个假设 HM ...
- 大数据系列之kafka-java实现
Java源码GitBub地址: https://github.com/fzmeng/kafka-demo 关于kafka安装步骤可见文章 http://www.cnblogs.com/cnmeng ...