spring整合Quartz跟使用原生的api的区别主要是在于调度对象实现的方式。
原生的Quartz任务调度实现方式可以参考原生Quartz动态任务调度实现
下面基于上面的原生Quartz动态任务调度实现讲下如何整合spring来实现。
整合spring,主要就是声明SchedulerFactoryBean。
这个是spring实现的任务调度对象。
在spring.xml里头声明:
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="true"> <!--<property name="dataSource" ref="dataSource"/>--> <property name="schedulerName" value="mainScheduler"/> <!--<property name="jobSchedulingDataLocations" value="classpath:quartz/quartz-data.xml"/>--> <!--<property name="quartzProperties">--> <!--<props>--> <!--<prop key="org.quartz.scheduler.instanceId">AUTO</prop>--> <!--<prop key="org.quartz.scheduler.skipUpdateCheck">true</prop>--> <!--<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>--> <!--<prop key="org.quartz.threadPool.threadCount">30</prop>--> <!--<prop key="org.quartz.threadPool.threadPriority">5</prop>--> <!--<prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>--> <!--<prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop>--> <!--<prop key="org.quartz.jobStore.useProperties">false</prop>--> <!--<prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>--> <!--<prop key="org.quartz.jobStore.isClustered">true</prop>--> <!--<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>--> <!--</props>--> <!--</property>--> </bean>在调用时候:
@Resource(name = "scheduler") private Scheduler scheduler;上面的scheduler就是后面要用的调度对象,只有这个区别。