- 浏览: 78486 次
文章分类
最新评论
2.Quartz在Spring中动态设置cronTrigger方法一
Spring配置文件:
<bean id="scheduleInfoAction" class="com.lively.happyoa.jobs.webapp.action.ScheduleInfoAction">
<property name="scheduler" ref="schedulerFactory"/>
<property name="scheduleInfoManager" ref="scheduleInfoManager"/>
</bean>
<bean id="schedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="scheduleInfoAction"/>
<property name="targetMethod" value="reScheduleJob"/>
<property name="concurrent" value="false"/>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
<property name="jobDetail" ref="schedulerJobDetail"/>
<property name="cronExpression">
<value>0/10 * * * * ?</value>
</property>
</bean>
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger"/>
</list>
</property>
</bean>
scheduleInfoAction中的reScheduleJob ()方法及相关方法
① reScheduleJob读取数据库,获得自定义定时器调度时间():
private void reScheduleJob() throws SchedulerException, ParseException{
// 运行时可通过动态注入的scheduler得到trigger
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger("cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = getCronExpressionFromDB();
String originConExpression = trigger.getCronExpression();
// 判断从DB中取得的任务时间(dbCronExpression)和现在的quartz线程中的任务时间(originConExpression)是否相等
// 如果相等,则表示用户并没有重新设定数据库中的任务时间,这种情况不需要重新rescheduleJob
if(!originConExpression.equalsIgnoreCase(dbCronExpression)){
trigger.setCronExpression(dbCronExpression);
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP, trigger);
}
// 下面是具体的job内容,可自行设置
// executeJobDetail();
}
② getCronExpressionFromDB():从数据库中获得dbCronExpression的具体代码,由于使用了scheduleInfoManager,所以要在定义相应的setter方法
private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and Id = '"+"1" + "'";
List scheduleList = scheduleInfoManager.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}
③ 在spring配置文件的scheduleInfoAction配置了相应的property(scheduler/ scheduleInfoManager),要为其设置setter方法
private Scheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(Scheduler scheduler){
this.scheduler = scheduler;
}
private ScheduleInfoManager scheduleInfoManager;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoManager
public void setScheduleInfoManager(ScheduleInfoManager scheduleInfoManager){
this.scheduleInfoManager = scheduleInfoManager;
}
http://www.educity.cn/java/503694.html
Spring配置文件:
<bean id="scheduleInfoAction" class="com.lively.happyoa.jobs.webapp.action.ScheduleInfoAction">
<property name="scheduler" ref="schedulerFactory"/>
<property name="scheduleInfoManager" ref="scheduleInfoManager"/>
</bean>
<bean id="schedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="scheduleInfoAction"/>
<property name="targetMethod" value="reScheduleJob"/>
<property name="concurrent" value="false"/>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
<property name="jobDetail" ref="schedulerJobDetail"/>
<property name="cronExpression">
<value>0/10 * * * * ?</value>
</property>
</bean>
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger"/>
</list>
</property>
</bean>
scheduleInfoAction中的reScheduleJob ()方法及相关方法
① reScheduleJob读取数据库,获得自定义定时器调度时间():
private void reScheduleJob() throws SchedulerException, ParseException{
// 运行时可通过动态注入的scheduler得到trigger
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger("cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = getCronExpressionFromDB();
String originConExpression = trigger.getCronExpression();
// 判断从DB中取得的任务时间(dbCronExpression)和现在的quartz线程中的任务时间(originConExpression)是否相等
// 如果相等,则表示用户并没有重新设定数据库中的任务时间,这种情况不需要重新rescheduleJob
if(!originConExpression.equalsIgnoreCase(dbCronExpression)){
trigger.setCronExpression(dbCronExpression);
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP, trigger);
}
// 下面是具体的job内容,可自行设置
// executeJobDetail();
}
② getCronExpressionFromDB():从数据库中获得dbCronExpression的具体代码,由于使用了scheduleInfoManager,所以要在定义相应的setter方法
private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and Id = '"+"1" + "'";
List scheduleList = scheduleInfoManager.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}
③ 在spring配置文件的scheduleInfoAction配置了相应的property(scheduler/ scheduleInfoManager),要为其设置setter方法
private Scheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(Scheduler scheduler){
this.scheduler = scheduler;
}
private ScheduleInfoManager scheduleInfoManager;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoManager
public void setScheduleInfoManager(ScheduleInfoManager scheduleInfoManager){
this.scheduleInfoManager = scheduleInfoManager;
}
http://www.educity.cn/java/503694.html
发表评论
-
使用eclipse调试maven项目
2014-02-13 10:21 793进行如下设置 1、项目-Debug As-Debug Co ... -
linux 配置jdk和tomcat
2013-11-04 23:27 681原谅链接:http://heijialun425.dian ... -
Java中Vector、ArrayList、List使用深入剖析(转)
2013-05-24 11:03 798线性表,链表,哈希表是常用的数据结构,在进行Java开发时 ... -
tomcat的j_security_check验证机制
2013-04-27 09:45 3954tomcat的j_security_check验证机制 是利 ... -
struts2 文件的上传和下载
2013-02-27 15:48 748struts2 文件的上传和下载 -
jsp到action用get方法相互传中文时乱码的解决方案
2012-11-09 13:12 718jsp->action: ... -
jquery插件实现ajax异步上传并预览文件
2012-11-02 11:42 1098jquery插件实现ajax异步上传并预览文件 -
(转)struts2中的jsp值传到后台action接收的三种方法
2012-09-16 14:38 1029struts2中的jsp值传到后台action接收 ... -
javascript向后台全传值后中文乱码解决方法
2012-01-21 15:43 1174javascript中向后台传值 中文是乱码解决方法, ... -
Struts2中的action利用Ajax向页面返回数据,及解决返回的中文乱码
2012-01-13 20:21 30391,在action中的代码 HttpServlet ... -
解决使用ajax时浏览器的缓存问题
2011-11-18 00:40 1363前几天在做东西的时候老是出现一人解决不了的问题,一直找不到原因 ... -
验证码的的生成
2011-11-10 22:00 1442[size=medium] 这个类是暑假在实验室的时候老师让我 ... -
java操作Mysql数据库
2011-11-04 01:23 4580用数据库这么长时了, ... -
利用javascript忽略文本框的空格
2011-11-04 00:47 1395呵呵,这是前几天考核的时候临时到网上搜的,当时也没想到它有去空 ... -
利用java解压.zip的压缩文件
2011-11-04 00:37 1150这段代码是我从网上直接复制下来的,写的真的很不错,可以直接运 ... -
利用POI将excel表格中的内容导入到数据库中
2011-11-04 00:22 5789我实现的功能是将excel中的数据导入到Mysql数据库中, ... -
jsp实现文件的上传及javascript对上传文件的简单验证
2011-11-04 00:09 3799前两天做OJ的时候,我做的两个功能都涉及到了文件的上传这 ...
相关推荐
Spring定时器还支持动态修改任务执行计划,例如通过`ThreadPoolTaskScheduler`或`ConcurrentTaskScheduler`来调整线程池大小,控制并发执行的任务数量。此外,我们还可以通过`@Scheduled`注解的`initialDelay`属性来...
标题“spring定时器的动态设置”涉及到的是Spring框架中的任务调度功能,主要使用的是Spring的`@Scheduled`注解和`TaskScheduler`接口。在Java应用中,有时我们需要执行一些定时任务,例如清理缓存、数据同步等,...
`@Scheduled`注解可以设置多个参数,如`cron`用于指定cron表达式,`fixedDelay`或`fixedRate`用于设置间隔时间。 例如,以下是一个每隔5秒执行一次的简单定时任务: ```java import org.springframework.scheduling...
通过`CronScheduleBuilder`,我们可以使用cron表达式设置更灵活的执行时间。 总的来说,Spring自带的定时任务简单易用,适合简单的定时需求。而Quartz功能强大,适合处理复杂的调度场景。在选择使用哪种方式时,...
Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在特定的时间间隔执行任务,而无需手动管理线程。在实际的开发中,这一特性常用于实现数据清理、统计计算、发送邮件等...
对于定时任务,我们需要在配置类上添加`@EnableScheduling`注解,Spring会自动搜索`@Scheduled`注解的方法并按照设定的时间间隔执行。 下面是一个简单的例子,展示了如何使用Spring AOP和定时任务: ```java @...
以上内容详细介绍了Spring定时器的相关知识点,包括其基本概念、不同类型的定时器以及实际应用中的配置和实现方法。通过理解和掌握这些知识,开发者可以更高效地利用Spring框架来实现复杂的定时任务功能。
- `period`属性表示两次任务之间的间隔时间(单位为毫秒)。本例中设置为86400000毫秒,即24小时执行一次。 - 通过`<ref>`标签将定时任务对象与具体的业务服务(`jdbc1Service`和`jdbc2Service`)进行绑定。 ####...
下面是一个完整的Spring定时器示例: 1. **配置Spring配置类** 首先,我们需要创建一个配置类,启用定时任务支持,并提供一个`ThreadPoolTaskScheduler`实例,用于调度任务。 ```java @Configuration @...
Spring定时器(TaskScheduler或ScheduledTasks): 在Spring框架中,我们可以利用`@Scheduled`注解和`TaskScheduler`接口来实现定时任务。`@Scheduled`注解可以直接在方法上,声明该方法为周期性执行的任务。例如: ...
这个接口允许我们安排任务在特定的时间间隔执行。除此之外,Spring 还提供了一个更强大的 `ScheduledExecutorService` 接口,它是 Java 的并发工具类,可以处理复杂的定时和并发需求。但是,在 Spring MVC 中,我们...
本篇将详细介绍如何配置和使用Spring的定时器来定时调用任务。 首先,让我们了解Spring Task的核心组件。`TaskExecutor`接口用于异步执行任务,而`TaskScheduler`接口则用于调度定时任务。在这个场景中,我们将重点...
这个实例,"spring定时器实例",显然关注的是如何在Spring中实现定时任务。下面我们将深入探讨Spring中的任务调度机制以及如何创建和配置定时任务。 Spring提供了两种主要的调度组件:`org.springframework....
本篇将详细介绍如何在Spring中配置定时器,并通过一个实际的Demo来加深理解。 一、Spring定时任务概述 Spring提供了两种主要的定时任务实现方式:`TaskScheduler`和`TaskExecutor`,以及基于Quartz的`Spring...
Spring定时器,全称为Spring Framework中的Task Execution and Scheduling模块,是Spring提供的一个强大而灵活的任务调度框架。它允许开发者在应用中安排周期性任务的执行,无需直接依赖底层的调度实现,如 Quartz ...
**Spring定时器TimerTask用法** 在Java世界中,`java.util.Timer` 和 `java.util.TimerTask` 是用于实现定时任务的基本工具,但它们在多线程环境中的表现并不理想,容易引发内存泄漏。Spring框架提供了更强大的定时...
【Spring定时器Demo详解】 在Java开发中,Spring框架提供了强大的定时任务管理功能,通过`Spring Task`模块,我们可以方便地实现定时任务的设定和执行。这个“spring定时器demo”是一个完整的工作示例,涵盖了从...
`Timer` 类包含两个主要的方法:`schedule(TimerTask task, Date firstTime)` 和 `schedule(TimerTask task, long delay)`,分别用于设置定时任务在指定时间或延迟后执行。 创建一个`TimerTask`子类并重写`run()`...
- `repeatInterval` 表示重复触发的时间间隔(毫秒)。 - **CronTriggerBean** 可以定义更复杂的触发规则,如基于日历的触发。 - `cronExpression` 表示 cron 表达式,用于定义复杂的触发规则。 ```xml ...