MethodInvokingTimerTaskFactoryBean устарел, какой класс я должен использовать вместо этого? - PullRequest
2 голосов
/ 22 марта 2012

У меня есть класс обслуживания, который мне нужен для выполнения метода на регулярной основе (с фиксированной скоростью) на основе параметра конфигурации.Первоначально я собирался использовать Java TimerTask, а затем настроить таймер для его запуска.Затем также свяжите весной события жизненного цикла контекста приложения для остановки, запустите указанный таймер.

При разборе их документации я наткнулся на это .Это дает приятную выгоду, потому что жизненный цикл этой задачи может автоматически управляться весной.Кроме того, он позволяет использовать масштабирование таким образом, чтобы, если бы я захотел добавить это в Quartz или реализовать какую-то другую реализацию планирования, это скорее изменение конфигурации, чем изменение кода.

Это звучало очень заманчиво, но потомЯ проверил их java-документы и обнаружил, что класс устарел

Примечания об устаревании указывают, что разработчики должны использовать вместо этого пакет spring.scheduling.concurrent.Однако этот пакет не включает в себя подобный класс, который предлагает абстракцию интерфейса Runnable (что я хотел бы сделать).Эта функциональность больше не доступна весной?Должен ли мой класс обслуживания реализовывать интерфейс Runnable и просто вызывать этот метод для вызова метода, определенного в интерфейсе службы?

Ответы [ 2 ]

3 голосов
/ 23 марта 2012

В итоге я выбрал следующее решение:

<!-- Scheduled tasks to be exectued -->
<task:scheduled-tasks scheduler="scheduler">
    <task:scheduled ref="myClass" method="myMethod" fixed-rate="${some.value}"/>
</task:scheduled-tasks>

<!-- The scheduler that executes scheduled tasks -->
<task:scheduler id="scheduler" pool-size="5"/>
0 голосов
/ 22 марта 2012

Для этого можно использовать @ Запланированная аннотация .

...