在Spring中配置 quartz任务调度的时候,会引发一下异常情况
1. Table ‘database.qrtz_locks’ doesn’t exist
原因:这个是SchedulerFactoryBean试图访问数据库获取quartz的一些管理表信息,自然访问数据库时需要注入dataSource bean,当缺省autowire为no,则没有dataSource bean被注入,quartz会认为项目没连数据库,会BYPASS这个访问管理表的功能. 当你配置了default-autowire=byName时,dataSource bean被自动注入,这时quartz认为项目既然能连到数据库,就想当然的认为对应的那些表一定存在,没找到时就出异常.
解决办法:
<bean id="myscheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
lazy-init="false" autowire="no">
<property name="triggers">
<list>
<!-- 订单超时取消批处理
<ref bean="orderCancelOverTimeTrigger" /> -->
</list>
</property>
</bean>
在SchedulerFactoryBean这个bean配置中关掉autoware,加入autorware=“no”