实际工程Quartz与Spring设计与实现一体化的热部署
1.需求说明
如今有这样一个需求:我们不知道管理员想设定过多厂时间运行主任务,须要在配置文件定义。在配置好后须要马上运行。实现热部署。
2.设计
3.实现
private static long curModifiedTime;
static {
try {
curModifiedTime = new File(filePath).lastModified();
System.out.println("当前文件改动时间为 " +curModifiedTime);
} catch (Exception e) {
e.printStackTrace();
} }
此时获取到文件本来的时间
public static boolean isModifiedValue()
{
boolean flag = false;
long lastModifiedTime = new File(filePath).lastModified();
if(lastModifiedTime > curModifiedTime) {
curModifiedTime= lastModifiedTime;
flag = true;
}
return flag;
}
读取文件最后改动地址。若大于初始时间。则将最后改动时间赋给初始时间
public boolean reSetTaskSchedulerzIntervalTime(){
boolean flag = false;
//监听到配置文件改动
if(PropertiesUtil.isModifiedValue()) {
long time = 0L;
try {
time = Integer.parseInt(PropertiesUtil.readValue(TaskSchedulerzIntervalTime));
simpleTrigger.setRepeatInterval(time);
Scheduler scheduler = quartzScheduler.getScheduler();
String jobName = simpleTrigger.getName();
String group = simpleTrigger.getGroup();
try {
scheduler.pauseJob(jobName, group);
scheduler.unscheduleJob(jobName,group);
scheduler.scheduleJob(simpleTrigger);
scheduler.resumeJob(jobName, group);
flag = true;
} catch (SchedulerException e1) {
e1.printStackTrace();
}
} catch (NumberFormatException e) {
System.out.println("定时任务非数字! ");
e.printStackTrace();
}
}
return flag;
}
当中,quartzScheduler和simpleTrigger是注入进去的,在Spring中整合Quartz时已经定义好,配置文件例如以下
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
<property name="configLocation" value="classpath:quartz.properties" />
</bean>
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail" />
</property>
<property name="startDelay">
<value>0</value>
</property>
<property name="repeatInterval" value="${taskSchedulerzIntervalTime}" />
</bean> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="taskScheduler" />
<property name="targetMethod" value="run" />
</bean>
之前的调度时间是在里面写死的。如今是通过配置文件来读取。例如以下
<context:property-placeholder location="classpath:config.properties,classpath:jdbc.properties" />
測试例如以下
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFja2Uy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
实际工程Quartz与Spring设计与实现一体化的热部署的更多相关文章
- spring boot (三): 热部署
介绍了Spring boot实现热部署的两种方式,这两种方法分别是使用 Spring Loaded和使用spring-boot-devtools进行热部署. 热部署是什么 大家都知道在项目开发过程中, ...
- spring boot 启动报错(spring-boot-devtools热部署后):The elements [spring.resources.cache-period] were left unbound. Update your application's configuration
详细错误代码: *************************** APPLICATION FAILED TO START *************************** Descript ...
- Spring Boot 要点--启动类和热部署
spring boot需要一个启动类 比如 package com.tianmaying; import org.springframework.boot.SpringApplication; imp ...
- Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools)
热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应的各 ...
- spring boot+ Intellj idea devtools 设置热部署
POM文件 <!--添加依赖--> <dependency> <groupId>org.springframework.boot</groupId> & ...
- 使用eclipse,对spring boot 进行springloader或者devtool热部署失败处理方法
确定配置进行依赖和配置没有错误后. 调整spring boot 的版本,因为新版本对老版本的spring boot 不能使用. 改为: <groupId>org.springframewo ...
- 使用Spring Loader或者Jrebel实现java 热部署
.其实JRebel和Spring-Loaded就是一个开发环境下的利器,skip build and redeploy process,大大提升了工作效率!而非生产环境的利器...因为线上reload ...
- Spring Boot学习笔记(三)实现热部署
pom文件中添加如下依赖即可 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...
- spring boot 在idea中实现热部署
1)在pom中直接引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...
随机推荐
- C#程序集引入无效的解决方法
在项目类库中已经引用了相关了类库,生成解决方案也没问题,但是到了后置代码,通过using引用其他类库的时候,再生成解决方案或者生成单个类库,就会报“未能找到类型或命名空间“xxx"(是否缺少 ...
- ORACLE10g R2【RAC+ASM→单实例FS】
ORACLE10g R2[RAC+ASM→单实例FS] 10g R2 RAC+ASMà单实例FS的DG,建议禁用OMF. 本演示案例所用环境: primary standby OS Hostnam ...
- C++ 中的异或操作^
好好的利用异或能够产生奇妙的效果. 异或运算的性质: 不论什么一个数字异或它自己都等于0.也就是说.假设我们从头到尾依次异或数组中的每个数字,那么终于的结果刚好是那个仅仅出现一次的数字.由于那些出现两 ...
- 使用Intent的Flag设置启动參数
Intent中关于激活Activity的Flag Intent类定义了一批常量,用于配置激活Activity时的相关參数; 在Intent中设置Flag ·调用Intent的setFlags()或ad ...
- [React Intl] Render Content Based on a Number using react-intl FormattedMessage (plural)
Using the react-intl FormattedMessage component, we’ll learn how to render content conditionally in ...
- [Angular] Design API for show / hide components based on Auth
Simple Auth service: import { Injectable } from '@angular/core'; import {HttpClient} from '@angular/ ...
- 2、HZK和FreeType的使用
HZK16汉字库的使用 定义如下: unsigned char str[]="我" 在运行时str被初始化为2个字节长度,内容为“我”的GBK码,为:0xCE(区码),0xD2(位 ...
- [转载]Surging Demo 项目之一
开发与运行环境 IDE Visual Stadio 2017/Visual Stadio 2019 Visual Stadio Core Docker 和 Docker-Compose 通过docke ...
- swift项目第二天:初始化项目
初始化项目 项目的部署版本 之后项目会运行在哪些系统中 横竖屏的支持 iPhone应用一般只支持横屏 iPhone游戏一般支持竖屏 iPad横竖屏都支持 设置项目的图标和启动图片 项目的图标(美工做好 ...
- TextView之二:常用属性 分类: H1_ANDROID 2013-10-30 12:43 3203人阅读 评论(0) 收藏
参考自<疯狂android讲义>2.3节 //TextView所呈现的文字 android:text="我爱Java" //文字颜色 android:textColor ...