以下内容来自网络:
一:配置schedule
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="testTrigger"/>
</list>
</property>
<property name="autoStartup" value="true"/>
</bean>
注意:schedule包含一个triggers列表二:配置trigger
<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="testJobDetail"/>
<property name="cronExpression" value="0 15 15 ? * 3#2"/><!-- 每月第二周的周一15:15 -->
</bean>
三:配置jobDetail
<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="testJob"/>
<property name="targetMethod" value="execute"/>
<property name="concurrent" value="false"/>
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>
四:配置业务处理类也就是本例中的targetObject,即ref属性指向的testJob(bean)
<bean id="testJob" class="com.cjm.web.service.quartz.TestJob"/>
五:业务类的代码
public class TestJob {
public void execute(){
try{
//.......
}catch(Exception ex){
ex.printStackTrace();
}
}
}
说明:业务类不需要继承任何父类,也不需要实现任何接口,它只是一个pojo(普通java)类
在spring配置和quartz集成内容时,有两点需要注意:
1)在<beans>中不能设置default-lazy-init=true,否则定时任务不触发,
default-lazy-init默认的设置是false
2)在<beans>中不能设置default-autowire=byName的属性
否则后台会报org.springframework.beans.factory.BeanCreationException异常
所以必须通过ref明确引入