通过配置的方式实现spring的quartz定时任务。
方式一,jobDetail的bean利用MethodInvokingJobDetailFactoryBean 工厂包装 : (1)定义一个bean,执行具体的业务操作。 <bean id="updatePersonService" class="com.corop.packname.UpdatePersonService"/> (2)定义一个jobDetail,执行业务操作的作业。 <bean id="updatePersonJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 作业要执行的业务操作 bean --> <property name="targetObject"> <ref bean="updatePersonService" /> </property> <!-- 业务操作bean里面具体执行业务操作的方法--> <property name="targetMethod"> <value>updatePerson</value> </property> <!-- 作业不并发执行 --> <property name="concurrent"> <value>false</value> </property> </bean> (3)定义一个触发器,根据时间表达式定时触发执行作业 <bean id="updatePersonTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- 要触发执行的作业 bean --> <property name="jobDetail"> <ref bean="updatePersonJob" /> </property> <!-- 触发作业的时间表达式 --> <property name="cronExpression"> <!--"0 59 23 * * ?" 每天晚上23点59触发--> <value>0 57 00 * * ?</value> </property> </bean> (4)定义一个任务调度器 <!--lazy-init=false 容器启动时启动调度器,默认值, singleton='true'这个bean是单独存在的--> <bean id="startQuertz" lazy-init="false" singleton='true' autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <!--触发器列表--> <list> <ref local="updatePersonTrigger"/> </list> </property> <!--自动启动调度器器--> <property name="autoStartup"> <value>true</value> </property> </bean> 方式二,jobDetail采用继承QuartzJobBean的方式: (1)定义的业务操作bean继承QuartzJobBean,重载方法 executeInternal(JobExecutionContext jobexecutioncontext) ,执行具体的业务操作。 class UpdatePersonService extends QuartzJobBean{ private Person person; public void setPerson(Person person){ this.person = person; } @Override public void executeInternal(JobExecutionContext ctx){ throws JobExecutionException //执行具体的业务操作 String param1 = ctx.getJobDetail().getJobDataMap().getString("param1"); } } (2)定义jobDetail的bean : <bean id = 'updatePersonJob' class= 'org.springframework.scheduling.quartz.JobDetailBean'> <!--定义业务操作类--> <property name="jobClass" value = 'com.corop.packname.UpdatePersonService' /> <!--定义执行业务操作需要的参数 --> <property name="jobDataAsMap"> <map> <entry key="timeout" value="0" /> <!-- 此参数是一个bean --> <entry key="person" value-ref = 'personBean' /> <!--可以从作业执行容器获取此参数--> <entry key="param1" value="com.custom.package.ClassName"/> </map> </property> </bean> <bean id = 'personBean' class= 'com.corop.packname.Person'/> (3)定义触发器,及(4)定义核心调度器 与 方式一同。
相关推荐
可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合实现动态的改变定时任务的状态的一个...
java中spring quartz定时任务demo,里面包含项目所需的quartz.jar, spring.jar包,配置文件等,可直接运行使用
spring3 配置quartz定时任务的使用。一个小例子。可直接运行Test.java。就可以启动定时任务。每10秒钟执行一次,可以根据自己配置。
定时任务demo,Java语言,spring整合quartz配置文件实现定时任务
spring-cloud-alibaba+dubbo+nacos+quartz以yml配置方式实现
Springboot整合Quartz实现定时任务数据库动态配置,新增任务、修改cron表达式、暂停任务、恢复任务、删除任务等操作
spring注解Quartz定时执行功能
分享项目中使用到的spring中quartz定时任务文件,其中有quartz.xml demo实例,非常清楚每个步骤和流程,也有配置文件 quartz.properties 详细说明,如有不足之处,请多指教,谢谢!
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
NULL 博文链接:https://medbricom.iteye.com/blog/1782765
spring3 配置quartz定时任务的使用。一个小例子。可直接运行Test.java。就可以启动定时任务。
传统Spring+Quartz实现的定时器一般都是通过配置文件中配置的,这就意味着如果我们修改了定时任务的时间,就得重新启动一下Tomcat,而且每次新建一个任务就得在spring中添加相关的配置信息,非常麻烦。基于上面的...
spring多个定时任务quartz配置
springboot整合Quartz实现动态配置定时任务源码
Spring Quartz如何动态配置时间
Spring Boot 配置 Quartz 定时任务(csdn)————程序
NULL 博文链接:https://fanshuyao.iteye.com/blog/2392350
Spring Quartz定时作业,包含了任务,触发器,调度的配置文件,启动tomcat就可以运行,你懂得
spring 集成quartz定时任务 用数据库实现quartz的集群
NULL 博文链接:https://duanfei.iteye.com/blog/1732839