工作多年,作为一个Java程序员,做过了好多spring项目了,定时任务也做了好多次,但是每次都是这个配置文件老是忘,为什么呢,因为不善于也是懒于总结管理,老是以为自己记得住,其实他们的配置还是挺精细的。现在又做了一次定时器的任务,是间隔一段时间执行一个任务的,其实这样的简单定时,完全可以跑一个线程,或者用timer来实现,但是由于做的项目还有其他的要做定时处理,就用这个吧,spring的scheduler也是蛮强大的。
首先,.在spring配置文件中创建bean,创建schedule
<bean id="schedule" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="testTrigger"/>
</list>
</property>
</bean> 这里的id可以不要,因为用不到。
然后, 在spring配置文件中创建bean,创建你的triggers
<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="testJobDetail" />
<property name="cronExpression" value="0 1/5 * * * ?" />
</bean> 这里要把triggers的id设置为你已经创建的schedule的里面的ref bean那个名字用来调用它。
第三,在spring配置文件中创建bean,指定定时器作用在那个类那个方法上面
<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="targetTestService" />
<property name="targetMethod" value="dsrw" />
</bean> 这里bean的id要设置为上面triggers的ref的名字,保证关系对应。 这里的targetMethod要指定你要在实现的定时类的那个方法名字。
最后,还得把你作用的对象交Spring来管理,所以在spring配置文件中创建作用类的 bean
<bean id="targetTestService" class="com.jwx.fbde.biz.service.Test" scope="prototype"> </bean>
记得所有的bean 的id都不能相同,不然会报错,所以取名字还要注意点。
建一个定时类,例如Test.java
public class Test{
//在类里定义一个定时的方法
public void dsrw(){
//这里实现你要做的东西了
}
}
好吧,有不明白的留言,多多交流吧。