`

动态设置spring定时器的间隔时间

阅读更多
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定时器 spring定时器

    Spring定时器还支持动态修改任务执行计划,例如通过`ThreadPoolTaskScheduler`或`ConcurrentTaskScheduler`来调整线程池大小,控制并发执行的任务数量。此外,我们还可以通过`@Scheduled`注解的`initialDelay`属性来...

    spring定时器的动态设置

    标题“spring定时器的动态设置”涉及到的是Spring框架中的任务调度功能,主要使用的是Spring的`@Scheduled`注解和`TaskScheduler`接口。在Java应用中,有时我们需要执行一些定时任务,例如清理缓存、数据同步等,...

    spring定时器简单的demo

    `@Scheduled`注解可以设置多个参数,如`cron`用于指定cron表达式,`fixedDelay`或`fixedRate`用于设置间隔时间。 例如,以下是一个每隔5秒执行一次的简单定时任务: ```java import org.springframework.scheduling...

    spring 定时器的两种实现

    通过`CronScheduleBuilder`,我们可以使用cron表达式设置更灵活的执行时间。 总的来说,Spring自带的定时任务简单易用,适合简单的定时需求。而Quartz功能强大,适合处理复杂的调度场景。在选择使用哪种方式时,...

    spring定时器简单实例

    Spring定时器,也被称为Spring Boot的定时任务,是Spring框架中的一个强大功能,它允许开发者在特定的时间间隔执行任务,而无需手动管理线程。在实际的开发中,这一特性常用于实现数据清理、统计计算、发送邮件等...

    springAop与spring定时器

    对于定时任务,我们需要在配置类上添加`@EnableScheduling`注解,Spring会自动搜索`@Scheduled`注解的方法并按照设定的时间间隔执行。 下面是一个简单的例子,展示了如何使用Spring AOP和定时任务: ```java @...

    spring定时器

    以上内容详细介绍了Spring定时器的相关知识点,包括其基本概念、不同类型的定时器以及实际应用中的配置和实现方法。通过理解和掌握这些知识,开发者可以更高效地利用Spring框架来实现复杂的定时任务功能。

    SPRING 定时器的使用

    - `period`属性表示两次任务之间的间隔时间(单位为毫秒)。本例中设置为86400000毫秒,即24小时执行一次。 - 通过`&lt;ref&gt;`标签将定时任务对象与具体的业务服务(`jdbc1Service`和`jdbc2Service`)进行绑定。 ####...

    spring 定时器完整实例 demo

    下面是一个完整的Spring定时器示例: 1. **配置Spring配置类** 首先,我们需要创建一个配置类,启用定时任务支持,并提供一个`ThreadPoolTaskScheduler`实例,用于调度任务。 ```java @Configuration @...

    JAVA获取当前时间以及JAVA_Spring定时器

    Spring定时器(TaskScheduler或ScheduledTasks): 在Spring框架中,我们可以利用`@Scheduled`注解和`TaskScheduler`接口来实现定时任务。`@Scheduled`注解可以直接在方法上,声明该方法为周期性执行的任务。例如: ...

    spring定时器实现源码

    这个接口允许我们安排任务在特定的时间间隔执行。除此之外,Spring 还提供了一个更强大的 `ScheduledExecutorService` 接口,它是 Java 的并发工具类,可以处理复杂的定时和并发需求。但是,在 Spring MVC 中,我们...

    spring定时器,定时调用任务配置

    本篇将详细介绍如何配置和使用Spring的定时器来定时调用任务。 首先,让我们了解Spring Task的核心组件。`TaskExecutor`接口用于异步执行任务,而`TaskScheduler`接口则用于调度定时任务。在这个场景中,我们将重点...

    spring定时器实例

    这个实例,"spring定时器实例",显然关注的是如何在Spring中实现定时任务。下面我们将深入探讨Spring中的任务调度机制以及如何创建和配置定时任务。 Spring提供了两种主要的调度组件:`org.springframework....

    Spring定时器配置详解(附demo)

    本篇将详细介绍如何在Spring中配置定时器,并通过一个实际的Demo来加深理解。 一、Spring定时任务概述 Spring提供了两种主要的定时任务实现方式:`TaskScheduler`和`TaskExecutor`,以及基于Quartz的`Spring...

    spring定时器相关资料

    Spring定时器,全称为Spring Framework中的Task Execution and Scheduling模块,是Spring提供的一个强大而灵活的任务调度框架。它允许开发者在应用中安排周期性任务的执行,无需直接依赖底层的调度实现,如 Quartz ...

    Spring定时器TimerTask用法

    **Spring定时器TimerTask用法** 在Java世界中,`java.util.Timer` 和 `java.util.TimerTask` 是用于实现定时任务的基本工具,但它们在多线程环境中的表现并不理想,容易引发内存泄漏。Spring框架提供了更强大的定时...

    spring定时器demo

    【Spring定时器Demo详解】 在Java开发中,Spring框架提供了强大的定时任务管理功能,通过`Spring Task`模块,我们可以方便地实现定时任务的设定和执行。这个“spring定时器demo”是一个完整的工作示例,涵盖了从...

    spring定时器 Spring定时器的两种实现方式Java的Timer类和OpenSymphony的Quartz。

    `Timer` 类包含两个主要的方法:`schedule(TimerTask task, Date firstTime)` 和 `schedule(TimerTask task, long delay)`,分别用于设置定时任务在指定时间或延迟后执行。 创建一个`TimerTask`子类并重写`run()`...

    spring定时器代码注释

    - `repeatInterval` 表示重复触发的时间间隔(毫秒)。 - **CronTriggerBean** 可以定义更复杂的触发规则,如基于日历的触发。 - `cronExpression` 表示 cron 表达式,用于定义复杂的触发规则。 ```xml ...

Global site tag (gtag.js) - Google Analytics