Spring 3.0 の時点で、ScheduledTimerTask は非推奨になり、org.springframework.scheduling.concurrent にアップグレードする方法がわかりません。
<bean id="timerFactoryBean" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="onlineTimeSchedule" />
</list>
</property>
</bean>
<bean id="onlineTimeSchedule" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask" class="com.example.OnlineTimerTask" />
</property>
<property name="period" value="60000" />
<property name="delay" value="1000" />
</bean>
OnlineTimerTask が java.util.TimerTask を拡張する場所。パブリッシャーに毎分メッセージをパブリッシュするのは単純なタスクです。ドキュメントを確認しましたが、何もありません。並行パッケージからどの方法を使用するか、どれが最適かを理解できません。
また、この xml を Java の @Bean に変換したいと考えています。
編集:そこで、代わりに @Bean と @Configuration を使用して xml を実装しようとしましたが、これが得られたものです。
@Configuration
public class ContextConfiguration {
@Bean
public ScheduledExecutorFactoryBean scheduledExecutorFactoryBean() {
ScheduledExecutorFactoryBean scheduledFactoryBean = new ScheduledExecutorFactoryBean();
scheduledFactoryBean.setScheduledExecutorTasks(new ScheduledExecutorTask[] {onlineTimeSchedule()});
return scheduledFactoryBean;
}
@Bean
public ScheduledExecutorTask onlineTimeSchedule() {
ScheduledExecutorTask scheduledTask = new ScheduledExecutorTask();
scheduledTask.setDelay(1000);
scheduledTask.setPeriod(60000);
scheduledTask.setRunnable(new OnlineTimerTask());
return scheduledTask;
}
}
上記のコードは xml の正しい置き換えになりますか? 私の場合、setScheduledExecutorTasks は正しく機能しますか? onlineTimeSchedule() が複数回呼び出された場合、同じ Bean インスタンスへの参照はここで機能しますか?
scheduledFactoryBean.setScheduledExecutorTasks(new ScheduledExecutorTask[] {onlineTimeSchedule()});