今天在Spring中配置Quartz框架如下,定义上午的11点24分30秒执行userSerivce中的doJob方法,然而时间到了却没有执行
<!--schedule-->
<bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger" />
</list>
</property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="methodInvokingJobDetail"/>
<property name="cronExpression" value="30 24 11 * * ?"/>
</bean>
<bean id="methodInvokingJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="userService"/>
<property name="targetMethod" value="doJob"/>
</bean>
结果发现在xml配置头曾经配置了一个default-lazy-init="true"的属性,这导致了所有的bean在web容器启动的时候都不会自动实例化
因此导致Quartz框架中的实例bean也没有实例化。
解决方法:
去掉该属性,默认default-lazy-init="false"或者在局部的bean中配置加上lazy-init="false"
修改配置后,重启web容器,发现运行正常了!