Spring-quartz 可传参(包括service注入)任务调度 多个任务调度
1 JobDetail
注意:一个JobDetail中 只能触发一个方法,如果要调度多个任务 需要有多个job类!
普通任务:总调度(SchedulerFactoryBean)--> 定时调度器(CronTriggerFactoryBean) --> 调度明细自定义执行方法bean(MethodInvokingJobDetailFactoryBean) -->调度bean(我们定义的job类)
可传参任务:总调度(SchedulerFactoryBean)--> 定时调度器(CronTriggerFactoryBean) --> 调度明细bean(JobDetailFactoryBean)
如上是我们在配置调度器时的具体步骤及相互之间的依赖,区别主要在调度明细bean上,普通任务是(MethodInvokingJobDetailFactoryBean),而可传参任务是(JobDetailFactoryBean):
1)普通任务可以自定义执行方法,也就是说在其配置的调度bean(我们定义的job类)中我们可以自定义调度器最终执行的方法,可以叫work1也可以叫work2,and so on。而且要记住的一点,必须是无入参的方法!!!(做了一个测试,测试目的是看通过此类型调度类型是否也能传入参数所以定义了一个带入参的自定义方法即public void work(JobExecutionContext jobExecutionContext),最中测试结果是spring quartz会报找不到work方法及No such method work(),其默认执行我们生命的work无入参的方法。
2)可传参任务必须继承QuartzJobBean,重写protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException方法,其中JobExecutionContext就是我们在定义调度器明细时传入参数的上下文,我们可以通过JobExecutionContext取出传入的map,调度任务最终执行的就是executeInternal方法,使用该调度明细任务无法使用自定义方法。
-------------------------------------------------------------------------- Spring配置-------------------------------------------------------------------------------
<bean id="hasReturnParm" class="org.quartz.JobDataMap"> <constructor-arg> <map> <entry key="one" value="1" /> <entry key="validateComparsionInterface" value="http://x.x.x.x/validateComparsionInterface" /> </map> </constructor-arg></bean><bean id="hasReturnJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.x.x.CanTransferParm" /> <property name="jobDataMap"> <ref bean="hasReturnParm"></ref> </property></bean><bean id="every5minute" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!-- 工作类bean --> <property name="jobDetail"> <ref bean="hasReturnJobDetail" /> </property> <!-- cron表达式 --> <property name="cronExpression"> <value>${cron.every5minute}</value> </property></bean><bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="every5minute" /> </list> </property></bean><property name="triggers">
<list>
<ref local="cronTrigger_1" />
<ref local="cronTrigger_2" />
</list>
</property>
</bean>
Spring-quartz 可传参(包括service注入)任务调度 多个任务调度的更多相关文章
- spring MVC 尝试传参json(应用部分)
spring 3.1后增加新的注解:@Requestbody,@Responsebody, 暂不论Requestdody, 若想让后端代码直接返回json字符串,可使用@Responsebody, 用 ...
- Spring MVC URL传参
Spring MVC 学习 之 - URL参数传递 在学习 Spring Mvc 过程中,有必要来先了解几个关键参数: @Controller: 在类上注解,则此类将编程一个控制器,在项目启 ...
- Spring Swagger URL传参问题(转)
代码例子: @ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息") @ApiImplicitPar ...
- Spring MVC POJO传参方式
有两POJO类 Address.java package com.proc; public class Address { private String province; private Strin ...
- spring mvc 重定向传参
参考链接如下: http://bbs.csdn.net/topics/391034118?page=1 自己的示例程序: 详细页面提交一个修改动作,修改完成后跳转到检索页面,把检索条件重新赋值给检索页 ...
- 解决Spring MVC前台传参中文乱码问题
在web.xml文件中配置字符编码过滤器: <filter> <filter-name>CharacterEncoding</filter-name> <fi ...
- Spring boot+Thymeleaf传参跳转
$.ajax(): $.ajax({ type: "get", url:"/public/inform", async: true, data: detailJ ...
- 【service调用dao层传参的三种方式】
第一种方案:默认数组角标: service Public User selectUser(String name,String area); mapper: <select id="s ...
- Spring quartz定时任务service注入问题
今天想单元测试一下spring中的quartz定时任务,job类的大致结构和下面的SpringQtz1类相似,我的是实现的org.quartz.Job接口,到最后总是发现job类里注入的service ...
随机推荐
- v3学院带您一起学习FPGA
本文为原创,转载请注明! 课程名称:双buffer乒乓操作项目概况:使用FPGA内部ram作为缓冲器,实现对外部数据流的缓存:为了提升数据的传输及处理速度,在此节课中将用到两个ram进行乒乓操作.结构 ...
- weui.css中flex容器下子项目的水平和垂直居中
想用weui.css写微信平台的页面,发现没有让flex(weui-flex)容器下,子项目(weui-flex__item)居中的类. 百度了一下,是用justify-content:center; ...
- Android布局管理详解(1)—— LinearLayout 线性布局
Android的布局方式共有6种,分别是LinearLayout(线性布局).TableLayout(表格布局).FrameLayout(帧布局).RelativeLayout(相对布局).GridL ...
- 网络安全实验室 脚本关通关writeup
[1]key又又找不到了查看源代码.发现key的路径,点击进行了302跳转,抓包,得到key [2]快速口算要2秒内提交答案,果断上python import requests,re s = requ ...
- 关于Hibernate
计应134(实验班) 李佳鸿 Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来 ...
- Office 365开发概述及生态环境介绍(一)
原文于2017年3月13日首发于LinkedIn,请参考这个链接 离上一篇文章,很快又过去了两星期的时间.今天抓紧晚上的时间,开始了Office 365开发系列文章的第一篇,我会帮助大家回顾一下过去O ...
- ThinkPHP数据字段的缓存问题
在使用ThinkPHP开发应用时,在项目运行后会在应用(Application)目录下产生一个Runtime缓存文件夹 在生成Runtime之后,若改变数据表的字段结构,则在PHP代码中无法为新的字段 ...
- PDCA循环原理
1.PDCA循环原理:plan do check action 以pdca质量环模型为质量控制和保证的理论依据,对软件质量进行把控. plan计划阶段:项目质量规划 1.分析现状,找出质量问题 2 ...
- java开发中获取路径的一些方式
1.servlet开发获取WebContent(项目)的绝对路径: System.out.println(getServletContext().getRealPath("")); ...
- 基于原生js的返回顶部组件,兼容主流浏览器
基于原生js的返回顶部插件,兼容IE8及以上.FF.chrome等主流浏览器. js文件中封装了getScrollTop()和changeScrollTop()函数分别用于获取滚动条滚动的高度和修改滚 ...