0
点赞
收藏
分享

微信扫一扫

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:七、jobDataMap使用】:图灵课堂


七、jobDataMap使用

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:七、jobDataMap使用】:图灵课堂_定时任务

1. 第一种用法【推荐:更灵活】

1.1 封装的jobDetail还有trigger等都还可以存一些值。【TestJob.java】

  • usingJobData():其实就是一个map

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:七、jobDataMap使用】:图灵课堂_封装_02


1.2 这时候我们就可以在任务执行【真正的业务逻辑】的时候,来获取我们刚才放进去的一些参数。【MyTestJob.java】

  • 使用​​JobExecutionContext context​​里面的一些api来获取【我们可以把JobExecutionContext 理解成定时任务的一个大容器,所有的定时任务都是放到这里面运行的,提供了很多的api来访问全局】
  • context.getJobDetail().getJobDataMap();——>拿到这个JobDetail的map就可以获取到里面的一些参数
  • context.getTrigger().getJobDataMap();——>拿到这个trigger的map就可以获取到里面的一些参数
  • context.getMergedJobDataMap();——>用来将前面两个map合并【缺点就是如果key相同就会被覆盖】

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:七、jobDataMap使用】:图灵课堂_定时任务_03

2. 第二种用法【就需要定义多个属性】

2.1 在MyJob.java中定义一个属性,并且写出他的set

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:七、jobDataMap使用】:图灵课堂_java_04


2.2 这样我们就可以直接在TestJob.java中设置值。

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:七、jobDataMap使用】:图灵课堂_封装_05


2.3 这时候就不用再MyJob.java中调用很多context的api了,可以直接取

【jeecg-boot项目开发crm】:平台技术点——day05【Java定时任务解决方案:七、jobDataMap使用】:图灵课堂_封装_06

  • 注:如果jobDetail和trigger都设置了name,就会将jobDetail覆盖掉。


举报

相关推荐

0 条评论