控制器传值,需要根据对应值创建,启动以及对定时任务的相关操作:JobExecutionContext和JobDataMap基本用法,代码待优化,主要是用法吧
第一:控制器,

@RequestMapping("/stopTable")
public String stopTableBei(String tableName,String cron){
String result = "error";
try{
JobService.job(tableName,String cron);//将变量传入service
result = "ok";
}catch (Exception e){
e.printStackTrace();
}
return result;
}

第二:service层


//装载调度器
@Autowired
Scheduler scheduler;
public void job(String tableName) throws SchedulerException, InterruptedException {
// 定义一个触发器
Trigger trigger = newTrigger().withIdentity("trigger1", "group1") // 定义名称和所属的租
.startNow()
//可以链式定义多个值 .usingJobData("test1","Str")
.usingJobData("test2",true)
.usingJobData("test3",'女')
.withSchedule(cronSchedule(cron)) //待优化点
.build(); // 定义一个JobDetail
JobDetail job = newJob(MailJob.class) // 指定干活的类MailJob
.withIdentity("mailjob1", "mailgroup") // 定义任务名称和分组
.usingJobData("email", "admin@110.com") // 定义属性
.usingjobdata("tableName",tableName)//存入传过来的值
.build(); // 调度加入这个job
scheduler.scheduleJob(job, trigger);
System.out.println("当前调度器的id是:"+scheduler.getSchedulerInstanceId()); // 启动
scheduler.start();
}

第三:job类

@Configuration
@DisallowConcurrentExecution
@PropertySource("classpath:quartz.properties")
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
//SimpleFormateSimpleDateFormat smf = new SimpleDateFormat("yyyyMMdd_HHmmss");
//System.out.println(smf.format(new Date().getTime()));
//根据值类型和键获取对应值 trigger
String test1 = context.getTrigger().getJobDataMap().getString("test1");//根据键获取String值
Boolean test2 = context.getTrigger().getJobDataMap().getBoolean("test2");//根据键获取boolean值
Char test3 = context.getTrigger().getJobDataMap().getChar("test3");//根据键获取Char值
System.out.println(test1+"\t"+test2+"\t"+test3);
//根据值类型和键获取对应值 job
String tableName = context.getJobDetail().getJobDataMap().getString("tableName");//取传过来的值
context.getJobDetail().getJobDataMap().getString("email");//二者只是.getJobDetail()和.getTrigger()的不同
}
}

这样不仅可以传值,对于相同但是仅仅是操作对象不同的job,只用实现一个Job的类就够了,

对于JobExecutionContext context这个存放上下文信息的对象可以获取到的信息还有很多,配置JobDetail和Trigger的所有信息都可以获取,这里只写了获取自己传的参数

以上代码是还可以有dao层,还有专门存放任务的数据库,网上看到几个厉害的家伙博客是存放数据库的 大家可以看下

https://www.cnblogs.com/skyLogin/p/6915921.html  ,

https://blog.csdn.net/m0_37872161/article/details/77773966

实现对job的增删改查,以及启动或者关闭状态的控制
看是看出来点意思,但是还没有实践,这因该是任务较多的时候这样配置,感觉任务很少的情况并没有必要。

quartz——JobExecutionContext和JobDataMap的更多相关文章

  1. 浅谈JobExecutionContext与JobDataMap

    1.JobExecutionContext简介 (1)当Scheduler调用一个Job,就会将JobExecutionContext传递给job的execute方法 quartz无法调用job的有参 ...

  2. [异常笔记]required a bean of type 'org.quartz.JobExecutionContext' that could not be found

    *************************** APPLICATION FAILED TO START *************************** Description: Par ...

  3. 浅谈JobExecutionContext & JobDataMap

    JobExecutionContext是什么? 当Scheduler调用一个Job,就会将JobExecutionContext传递给Job的 execute() 方法: Job能通过JobExecu ...

  4. [Quartz笔记]玩转定时调度

    简介 Quartz是什么? Quartz是一个特性丰富的.开源的作业调度框架.它可以集成到任何Java应用. 使用它,你可以非常轻松的实现定时任务的调度执行. Quartz的应用场景 场景1:提醒和告 ...

  5. Spring 4 + Quartz 2.2.1 Scheduler Integration Example

    In this post we will see how to schedule Jobs using Quartz Scheduler with Spring. Spring provides co ...

  6. Quartz任务调度基本使用

    转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...

  7. Quartz 在 Spring 中如何动态配置时间--转

    原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...

  8. quartz集群分布式(并发)部署解决方案-Spring

    项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻辑问题, ...

  9. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

随机推荐

  1. LeetCode 110. Balanced Binary Tree(判断平衡二叉树)

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  2. qt linux 打包

    本文在银河麒麟上成功运行,程序类型:Qt控制台,使用到的Qt外库:mysql数据库 1.环境一共有两台,1是编译机[装有Qt.数据库],2是运行机[纯净机] 2.在编译机上安装Qt.mysql,我这里 ...

  3. Elasticsearch6.2.1安装elasticsearch-sq插件

    参考 https://github.com/NLPchina/elasticsearch-sql 1.下载插件 wget https://github.com/NLPchina/elasticsear ...

  4. Airflow使用指南

    1.只执行单个任务 将downstream和recursive按钮的点击状态取消,然后点击clear,最后点击run

  5. Django框架 + Djiango安装 + First Djiango + 常用命令

    一.Django框架 MVC框架和MTV框架 参考:https://www.cnblogs.com/taosiyu/p/11260016.html MVC,全名是Model View Controll ...

  6. .NET HttpWebRequest应用

    提供基于HttpWebRequest的请求的应用类,其中包含:get请求(带参或不带参).post请求.文件传输请求 方法的具体说明: PostHttp:post请求,支持三种提交模式:FROM.JS ...

  7. 更改ubuntu桌面环境

    1.修改桌面环境 update-alternatives --config x-session-manager 2.卸载某一种ppa源下面的软件 sudo apt-get install ppa-pu ...

  8. Vue 动态路由的实现以及 Springsecurity 按钮级别的权限控制

    思路: 动态路由实现:在导航守卫中判断用户是否有用户信息,通过调用接口,拿到后台根据用户角色生成的菜单树,格式化菜单树结构信息并递归生成层级路由表并使用Vuex保存,通过 router.addRout ...

  9. 基于DigitalOcean+LAMP+WordPress搭建个人网站

    1. 注册DigitalOcean并新建主机 为了搭建个人网站首先需要一个可以在公网范围访问的主机,可以选用国内如阿里云.国外如DigitalOcean的各种云主机提供商,这里选用DigitalOce ...

  10. 如何同时读取 TDateTimePicker 的 Date 和 Time ?

    由于 TDateTimePicker 只能用于日期或时间,不能同时使用.如果将Kind属性设置为dtkDate,则可以指定自定义DATE格式,但忽略任何TIME格式,并且Time未定义使用该属性.如果 ...