Spring中使用Quartz的两种方式
2017-09-29 00:00
127 查看
作业类是否继承QuartzJobBean
继承不继承
不继承QuartzJobBean,声明JobDetail时,使用
MethodInvokingJobDetailFactoryBean
继承QuartzJobBean,声明JobDetail时,使用
JobDetailFactoryBean
任务调度的触发时机
每隔指定时间触发一次:触发器使用SimpleTriggerBean每到指定时间触发一次:触发器使用CronTriggerBean
这两种触发方式都可以和两种作业继承方式相互组合来使用。
也就是有四种写法。
举个例子:
不继承QuartzJobBean,由SimpleTriggerBean触发
<bean id="simpleJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="myBean"/> <property name="targetMethod" value="printMessage"/> </bean> <!-- Run the job every 2 seconds with initial delay of 1 second --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"> <property name="jobDetail" ref="simpleJobDetail"/> <property name="startDelay" value="1000"/> <property name="repeatInterval" value="2000"/> </bean>
public class MyBean { public void printMessage(){ System.out.println("不继承QuartzJobBean的作业类。called by MethodInvokingJobDetailFactoryBean using SimpleTriggerFactoryBean"); } }
不继承QuartzJobBean,由CronTriggerBean触发
继承QuartzJobBean,由SimpleTirggerBean触发
继承QuartzJobBean,由CronTriggerBean触发
public class ScheduledJob extends QuartzJobBean { private AnotherBean anotherBean; protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { anotherBean.printMessage(); } public void setAnotherBean(AnotherBean anotherBean) { this.anotherBean = anotherBean; } }
public class AnotherBean { public void printMessage(){ System.out.println("继承QuartzJobBean的作业类,通过AnotherBean传递数据。called by JobDetailFactoryBean using CronTriggerFactoryBean"); } }
<!-- For times when you need more complex processing, passing data to the scheduled job --> <bean name="complexJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.penelope.quickstart.jobs.ScheduledJob"/> <property name="jobDataAsMap"> <map> <entry key="anotherBean" value-ref="anotherBean"/> </map> </property> <property name="durability" value="true"/> </bean> <!-- Run the job every 5 seconds only on Weekends --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="complexJobDetail"/> <property name="cronExpression" value="0/5 * * ? * SAT-SUN"/> </bean>
第二个例子是复杂的,在任务类中调用另一个Bean的方法。另一个Bean就是该作业类的JobData。使用
jobDataAsMap属性,在JobDetail中声明。
小菜虫使用
jobDataMap属性传递AnotherBean失败,原因不明。。。日后填坑。
相关文章推荐
- Spring中使用quartz执行定时任务的两种方式
- Spring整合quartz两种方式以及Spring轮询定时使用
- Spring中使用quartz执行定时任务的两种方式
- Spring中使用Quartz两种实现方式
- Spring中Quartz调度器的使用 ----继承QuartzJobBean,不继承QuartzJobBean两种方式
- Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解
- MongoDB的使用学习之(七)MongoDB的聚合查询(spring-data-mongodb两种方式)附项目源码
- spring bean 不使用注入的方式获取的两种方式
- Spring框架笔记(二十四)——Spring中的JDBC的两种使用方式
- 使用quartz和Spring-Task实现计划任务的四种方式
- 使用spring quartz实现任务调度(注解方式)
- spring集成定时任务框架 Quartz的两种方式
- 使用web.xml方式加载 Spring时,获取Spring context的两种方式:
- Spring(2)与接口配合使用和获取Bean容器的两种方式(BeanFactory 、ApplicationContext)
- 使用Spring(17)Spring中的定时调度(Scheduling)--传统方式创建Quartz任务
- Spring 整合Quartz两种方式比较(JobDetailBean和MethodInvokingJobDetailFactoryBean方式)
- 使用System.Threading的Timer&Quartz.net两种方式实现定时执行任务,防止IIS释放timer对象
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
- spring的quartz两种配置方式
- spring中BeanNameAutoProxyCreator和AnnotationAwareAspectJAutoProxyCreator两种AOP代理方式使用总结