Ответ таков: добавьте одно «работоспособное» поле

ая с весны 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 в @Bean в Java.

РЕДАКТИРОВАТЬ: Поэтому я попытался реализовать XML с помощью @Bean и @Configuration, и вот что я получил.

@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 () вызывается более одного раза?

scheduledFactoryBean.setScheduledExecutorTasks(new ScheduledExecutorTask[] {onlineTimeSchedule()});

Ответы на вопрос(3)

Ваш ответ на вопрос