java – Upgrading to springframework.scheduling.concurrent?
java – Upgrading to springframework.scheduling.concurrent?
Use org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean
in place of org.springframework.scheduling.timer.TimerFactoryBean
and use org.springframework.scheduling.concurrent.ScheduledExecutorTask
in place of org.springframework.scheduling.timer.ScheduledTimerTask
. You will need to adjust the property names and values as needed but, that should be pretty self evident.
Optionally, you could refactor your com.example.OnlineTimerTask
to not extend java.util.TimeTask
as the ScheduledTimerTask only requires a runnable.
Spring 4 configuration – Below configuration working after spring migration from 3.2.x to 4.6.x
<bean id=schedulerTask
class=org.springframework.scheduling.support.MethodInvokingRunnable>
<property name=targetObject ref=springJmsListnerContainer />
<property name=targetMethod value=execute />
</bean>
<bean id=timerTask class=org.springframework.scheduling.concurrent.ScheduledExecutorTask>
<property name=runnable ref=schedulerTask />
<property name=delay value=100 />
<property name=period value=60000 />
</bean>
<bean class=org.springframework.scheduling.concurrent.ScheduledExecutorFactoryBean>
<property name=scheduledExecutorTasks>
<list>
<ref bean=timerTask />
</list>
</property>
</bean>
java – Upgrading to springframework.scheduling.concurrent?
The answer is – add one runnable field
<bean id=scheduledExecutorTask
class=org.springframework.scheduling.concurrent.ScheduledExecutorTask>
<!-- wait 10 milli seconds before starting repeated execution -->
<property name=delay>
<value>10</value>
</property>
<!-- run every 1 second -->
<property name=period>
<value>1000</value>
</property>
<property name=runnable>
<ref bean=checkInvokingTask/>
</property>
</bean>