Comment faire pour activer TaskScheduler au printemps-boot?

Je suis en utilisant spring-boot pour configurer printemps valeurs par défaut.
Je voudrais utiliser le @EnableScheduling mécanisme, et de planifier mes tâches conditionnelles.

Je dois donc mettre en œuvre SchedulingConfigurer et définir TaskScheduler explicite.

Mais lors de l'injection de la TaskScheduler, j'obtiens l'erreur suivante. Mais pourquoi ne pas le printemps-démarrer automatiquement à fournir un Planificateur en conséquence?

@Configuration
@EnableAutoConfiguration
@EnableScheduling
public class AppConfig {

}

@Service
public class JobService implements SchedulingConfigurer {
    @Autowired
    private TaskScheduler taskScheduler;

    //schedule the task dynamically
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.setScheduler(taskScheduler); //fails
        taskRegistrar.addTriggerTask(task, trigger);
    }
}

Erreur:

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.scheduling.TaskScheduler; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:561)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
... 15 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.scheduling.TaskScheduler] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1308)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1054)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:949)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 17 more
Avez vous essayez la configuration du planificateur via xml de config? Quant à moi j'ai quelques problèmes avec l'annotation de configuration, mais il va en douceur avec xml de config.
Parce qu'il ne l'est pas. Pas tout le monde a besoin d'un planificateur et la détection n'est pas vraiment possible. Donc, vous allez ajouter votre propre.
Il est aussi un peu étrange que votre SchedulingConfigurer est un service, le plus logique est de être un @Configuration classe.

OriginalL'auteur membersound | 2015-02-11