ApplicationContext ac = new ClassPathXmlApplicationContext("timer-spring.xml");就可以调度任务了。
如果你的Task不想继承 TimerTask,可以通过Spring的MethodInvokingTimerTaskFactoryBean进行设置。例如有个Task如下:
可以通过以下配置实现任务调度:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="anotherScheduledTask"/>
</list>
</property>
<property name="daemon" value="false"/>
</bean>
<bean id="anotherTaskTarget" class="org.prague.util.AnotherTask">
</bean>
<bean id="anotherTask" class="org.springframework.scheduling.timer.MethodInvokingTimerTaskFactoryBean">
<property name="targetObject" ref="anotherTaskTarget"/>
<property name="targetMethod" value="run"/>
</bean>
<bean id="anotherScheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="delay" value="0"/>
<property name="period" value="1000"/>
<property name="timerTask" ref="anotherTask"/>
</bean>
</beans>
该说的已经差不多了。JDK的Timer使用还是很简单的,但对于复杂的任务调度,就需要在 TimerTask中进行判断。当然,还有其他的选择,比如Quartz就是很不错的任务调度工具,它也能和Spring的搭配得很出色。