七、jobDataMap使用
1. 第一种用法【推荐:更灵活】
1.1 封装的jobDetail还有trigger等都还可以存一些值。【TestJob.java】
- usingJobData():其实就是一个map
1.2 这时候我们就可以在任务执行【真正的业务逻辑】的时候,来获取我们刚才放进去的一些参数。【MyTestJob.java】
- 使用
JobExecutionContext context
里面的一些api来获取【我们可以把JobExecutionContext 理解成定时任务的一个大容器,所有的定时任务都是放到这里面运行的,提供了很多的api来访问全局】- context.getJobDetail().getJobDataMap();——>拿到这个JobDetail的map就可以获取到里面的一些参数
- context.getTrigger().getJobDataMap();——>拿到这个trigger的map就可以获取到里面的一些参数
- context.getMergedJobDataMap();——>用来将前面两个map合并【缺点就是如果key相同就会被覆盖】
2. 第二种用法【就需要定义多个属性】
2.1 在MyJob.java中定义一个属性,并且写出他的set
2.2 这样我们就可以直接在TestJob.java中设置值。
2.3 这时候就不用再MyJob.java中调用很多context的api了,可以直接取
- 注:如果jobDetail和trigger都设置了name,就会将jobDetail覆盖掉。