Spring Scheduler не работает - PullRequest
       6

Spring Scheduler не работает

19 голосов
/ 27 января 2011

У меня проблема с планировщиком задач Spring на основе аннотаций - я не могу заставить его работать, я не вижу здесь никаких проблем ...

application-context.xml

<task:scheduler id="taskScheduler" />
<task:executor id="taskExecutor" pool-size="1" />
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler" />

боб

@Service
public final class SchedulingTest {

    private static final Logger logger = Logger.getLogger(SchedulingTest.class);

    @Scheduled(fixedRate = 1000)
    public void test() {
        logger.debug(">>> Scheduled test service <<<");
    }

}

Ответы [ 11 ]

34 голосов
/ 25 сентября 2014

Spring @Configuration (не-xml-конфигурация) для задач, управляемых аннотациями

Просто добавьте @EnableScheduling в свой класс WebMvcConfig

@Configuration
@EnableWebMvc
@EnableAsync
@EnableScheduling
public class WebMvcConfig extends WebMvcConfigurerAdapter {
   /** Annotations config Stuff ... **/
}
24 голосов
/ 22 июня 2012

Если вы хотите использовать task:annotation-driven подход и ваша аннотация @Scheduled не работает, то вы, скорее всего, пропустили context:component-scan в вашем контексте xml. Без этой строки Spring не может угадать, где искать ваши аннотации.

<context:component-scan base-package="..." />
3 голосов
/ 24 июля 2012

если у вас есть dispatcher-servlet.xml, перенесите туда свою конфигурацию.это сработало для меня, и я оставил комментарий в этой статье: https://stackoverflow.com/a/11632536/546130

3 голосов
/ 27 января 2011

Наконец-то я нашел решение.

application-context.xml

<bean id="schedulingTest" class="...SchedulingTest" />

<task:scheduled-tasks>
    <task:scheduled ref="schedulingTest" method="test" cron="* * * * * ?"/>
</task:scheduled-tasks>

и метод test() без аннотации.Это запускает метод каждую секунду и работает отлично.

1 голос
/ 07 мая 2018

Решением для меня было добавить в applicationContext.xml:

<task:annotation-driven/>

со следующей схемой расположения:

http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
1 голос
/ 05 мая 2016

Это происходит потому, что по умолчанию Spring lazy инициализирует компоненты.

Отключите отложенную инициализацию для компонента, поместив эту аннотацию

@Lazy(false)

поверх вашего @Component.

1 голос
/ 10 июня 2014

Вы также должны проверить, что lazy-init имеет значение false для этого бина, или использовать default-lazy-init="false" в бобах.

Это решило мою проблему.

0 голосов
/ 02 апреля 2019

Просто добавьте @EnableScheduling в любой класс конфигурации весенней загрузки, помеченный @ Configuration

0 голосов
/ 20 марта 2019

Для меня решение, которое работало в Spring 5, заключалось в том, что мне пришлось добавить @Component в класс, содержащий @Scheduled аннотированные методы.

0 голосов
/ 31 июля 2018

Мне пришлось обновить свой dispatcher-servlet.xml следующим значением

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/task
            http://www.springframework.org/schema/task/spring-task-4.3.xsd"></beans>

:

<bean id="scheduledTasks" class="com.vish.services.scheduler.ScheduledTasks"></bean>
...