此文章是基于  搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台

一. jar包介绍

  1. spring-framework-4.3.4.RELEASE 的 libs 文件夹下得到:

spring-context-support-4.3.4.RELEASE.jar

  2. quartz-2.2.3.jar

二. 相关文件介绍

  1. applicationInfrastructure.xml,定时器配置文件

<?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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <!-- 定时器bean类定义 -->
<bean id="flexTimeJob" class="com.ims.infrastructure.quartz.FlexTimeJob">
<!-- 指定定时器调度工厂 -->
<property name="scheduler" ref="flexTimeSchedulerFactory" />
<!-- 向定时器注入bean -->
</bean> <!-- 任务定义 -->
<bean id="flexTimeJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 任务所在的类 -->
<property name="targetObject" ref="flexTimeJob" />
<!-- 任务所对应的方法名 -->
<property name="targetMethod" value="executeInternal" />
<property name="concurrent" value="false" />
</bean> <!-- 任务触发器 -->
<bean id="flexTimeJobTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="flexTimeJobDetail"/>
<property name="cronExpression" value="0 0 0 ? * *"/> <!-- 默认每天凌晨0点整打印 -->
<property name="startDelay" value="10000"/> <!-- 延迟10秒(10000毫秒)启动 -->
</bean> <!-- 调度工厂,触发器集合 -->
<bean id="flexTimeSchedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="flexTimeJobTrigger"/>
</list>
</property>
</bean> </beans>

  2. FlexTimeJob.java,定时器任务类

package com.ims.infrastructure.quartz;

import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Scheduler;
import org.quartz.TriggerKey; public class FlexTimeJob {
/**
* 调度工厂,可取得所属的触发器
*/
private Scheduler scheduler; /**
* 定时任务执行的方法
*/
protected void executeInternal(){
System.out.println("hello!");
} /**
* 重置定时时间任务的方法
*/
public void resetTime(String time)throws Exception{
String cronExpression = transformTime(time);// 时间格式如:13:30
TriggerKey triggerKey = TriggerKey.triggerKey("flexTimeJobTrigger",Scheduler.DEFAULT_GROUP);
CronTrigger trigger = (CronTrigger)scheduler.getTrigger(triggerKey);
String originConExpression = trigger.getCronExpression();
if(!originConExpression.equalsIgnoreCase(cronExpression)){
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(cronExpression); //按新的cronExpression表达式重新构建trigger
trigger = trigger.getTriggerBuilder().withIdentity(triggerKey)
.withSchedule(scheduleBuilder).build(); //按新的trigger重新设置job执行
scheduler.rescheduleJob(triggerKey, trigger);
}
} /**
* 将时间转换为cron表达式
* @param time 时间字符串,格式如:13:30
* @return
*/
private String transformTime(String time){
StringBuffer result = new StringBuffer();
String[] arr = time.split(" ");
String[] timeArr = arr[0].split(":");
result.append("0 "+timeArr[1]+" "+timeArr[0]);
result.append(" ? * *");
return result.toString();
} public Scheduler getScheduler() {
return scheduler;
}
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
} }

  3. flexTime.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试</title>
<%@ include file="/common/basePath.jsp"%>
</head>
<body>
~~~~~~~~~~~~~~~~~~~~~~可重置时间定时器~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<br><br>
<input type="text" name="time" id="time"> 时间格式如:13:30
<br><br>
<button type="button" onclick="resetTime();">设置</button>
<br><br><br> <script type="text/javascript" src="content/js/jquery/jquery-1.8.1.min.js"></script>
<script type="text/javascript"> function resetTime(){
$.ajax({
url:rootPath+"/test/flexTimeJob!reset.do?time="+$('#time').val(),
async:false
});
} </script>
</body>
</html>

三. 测试

  访问:http://localhost:8080/ims/test/flexTime.do,默认每天凌晨0时,后台会输出"hello!",重置后每天按时间定时输出

spring定时器(二)的更多相关文章

  1. Spring定时器实现(二)

    Spring结合quarzt可以实现更复杂的定时器,现做简单介绍相关配置: <?xml version="1.0" encoding="UTF-8"?&g ...

  2. spring定时器,定时器一次执行两次的问题

    Spring 定时器 方法一:注解形式 配置文件头加上如下: xmlns:task="http://www.springframework.org/schema/task" htt ...

  3. spring定时器设置(转自:http://my.oschina.net/LvSantorini/blog/520049)

    转自:http://my.oschina.net/LvSantorini/blog/520049<!-- MessageRequestTask类中包含了msgRequest方法,用于执行定时任务 ...

  4. java定时器,Spring定时器和Quartz定时器

    一.java定时器的应用 其实java很早就有解决定时器任务的方法了,java提供了了类java.util.TimerTask类基于线程的方式来实现定时任务的操作,然后再提供java.util.Tim ...

  5. Spring定时器的使用方法

    Spring定时器主要通过Quartz Cron表达式来实现定时任务,注解用法如下: # 每月的最后1天 @Scheduled(cron = "0 0 18 28–31 * ?") ...

  6. Spring 定时器Quartz的用法

    Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...

  7. spring定时器,当遇见半小时的情况时

    spring定时器遇见半小时的解决方法(这里只提供注解方式) @Scheduled(fixedRate=6000000)//每隔100分钟执行方法 fixedRate的值是毫秒

  8. Spring 定时器的使用

    spring定时器应用 相关类: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean 配置定时远行方法 o ...

  9. spring定时器

    本人小菜鸟一枚,今天在公司看到一段spring定时器配置,自己总结一下! <!-- 定义调用对象和调用对象的方法 --><bean id="jobtask9" c ...

  10. 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz

    1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...

随机推荐

  1. android FragmentActivity+FragmentTabHost+Fragment框架布局

    这周比较闲,计划系统的学习一下android开发,我本是一名IOS程序员,对手机开发还是有自己的一套思路的, 固这套思路用到我当前学android上了,先选择从Main页面的tabbar部分代码入手, ...

  2. JQuery实现对勾事件代码

       1.JQuery选择器中使用变量实现动态选择解决方案: <table> <tr> <th>用户名</th> <th>状态</th ...

  3. Hibernate总结(二)

    在上一篇Hibernate总结(一)简单总结了一级缓存,快照,增删改查的简单使用,这一篇总结两张表的级联操作. 级联涉及到三种情况,many-many,1-many,many-1. 首先是1-many ...

  4. 项目中应用eventbus解决的问题

    在项目开发过程中,往往有些功能表面看起来简单,但实际开发的结果非常复杂,仔细分析下原因发现很多都是因为附加了许多的额外功能. 真的简单吗? 比如我们对一个电商平台的商品数据做修改的功能来讲,其实非常简 ...

  5. MyBatis入门(一)

    一.MyBaris简介 1)MyBaris发展过程 MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移 ...

  6. jQuery cxScroll 间歇式无缝滚动

    版本: jQuery v1.7+ jQuery cxScroll v1.2.2 注意事项: 内部会自动创建 prev 及 next 切换按钮,也可以在外部直接创建,若外部已创建或设置prevBtn: ...

  7. 20款免费的 PSD 网站模板【免费下载】

    如果你的新项目预算很低,那么免费网站模板对你来说是一个很好的解决方案.有很多的预先设计的网站模板 PSD 素材可以使用和自由定制.在这里,你会发现可供下载的超级棒的免费网站模板.你可以使用它们来创建自 ...

  8. jQuery的document ready与 onload事件——你真的思考过吗?

    在进行实验和资料查询时,我遇到了几个关键问题: 1. window.onload到底是什么加载完触发? 2. body为什么会有onload事件? 3. 为什么是window.onload,而不是do ...

  9. 为Sharepoint 2010 批量创建SharePoint测试用户

    无意搜到下面一篇文章,http://www.cnblogs.com/lambertqin/archive/2012/04/19/2457372.html,原作者写的太"高大上",可 ...

  10. SharePoint 2013 为用户组自定义EventReceiver

    前 言 在SharePoint的开发中,EventReceiver是很重要的一个部分,但是,常常遇到有些需要事件的时候,却没有相应的模板,因为EventReceiver创建时的模板只有那几个,除此之外 ...