Scheduler 调度器,日程安排程序
Trigger 触发条件 simpleTrigger (每隔1秒执行一次)
JobDetail 定义任务数据;Job 真正的执行逻辑;
那为什么要设计成 JobDetail+Job,不直接使用Job?并发问题;sheduler每次执行,都会根据JobDetail创建一个新的Job实例,这样就避免并发访问问题;
Cron表达式 cronExpression /5 * * * ? 每隔5秒执行一次。
在applicationContext.xml ,Quartz和spring整合
<!-- 配置任务bean -->
<bean id="billsCheckJob" class="cn.xxx.other.BillsCheckJob" />
<!-- 配置方法映射工厂类 -->
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="billsCheckJob"></property>
<property name="targetMethod" value="runTask"></property>
<property name="concurrent" value="false"></property>
<!-- concurrent : false表示等上一个任务执行完后再开启新的任务 -->
</bean>
<!-- 配置任务高度的的时间/周期 -->
<bean id="billsCheckJobTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail"></property>
<property name="cronExpression" value="*/5 * * * * ?"></property>
<property name="startDelay" value="3000"></property>
</bean>
<!-- 调用时间触发 -->
<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="billsCheckJobTrigger"/>
<!-- <ref bean="simpleTrigger"/> -->
</list>
</property>
</bean>