À l'aide de @Prévue et @EnableScheduling mais donne NoSuchBeanDefinitionException
J'ai suivi exemples très simples en ligne pour configurer une tâche cron dans le Printemps et pourtant, je reçois cette erreur dans mon Tomcat journal de démarrage à chaque fois:
2015-05-25 00:32:58 DEBUG ScheduledAnnotationBeanPostProcessor:191 -
Could not find default TaskScheduler bean org.springframework.beans.factory.NoSuchBeanDefinitionException: No
qualifying bean of type [org.springframework.scheduling.TaskScheduler] is defined
2015-05-25 00:32:58 DEBUG ScheduledAnnotationBeanPostProcessor:202 - Could not
find default ScheduledExecutorService bean
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying
bean of type [org.springframework.scheduling.TaskScheduler] is defined
Et les 2 classes java utilisé pour mettre en œuvre le cron:
1) @classe de Configuration:
@Configuration
@EnableScheduling
public class ClearTokenStoreCronEnable {
final static Logger log =
LoggerFactory.getLogger(ClearTokenStoreCronEnable.class);
private @Autowired TokenStoreRepository tokenStoreRepository;
}
et Cron classe d'emploi:
@Service
public class ClearTokenStoreWorkerService {
final static Logger log = LoggerFactory.getLogger(ClearTokenStoreWorkerService.class);
private @Autowired TokenStoreRepository tokenStoreRepository;
//@Scheduled(fixedDelay=5000)
//run daily at midnight
@Scheduled(cron = "0 0 * * * *")
public void tokenStoreTable() {
log.debug("tokenstore table truncated - start");
tokenStoreRepository.deleteAll();
log.debug("tokenstore table truncated - end");
}
}
Comme une note de côté, la tâche cron s'exécute à minuit, mais il semble aussi à courir au hasard à d'autres moments. Vous ne savez pas si c'est un bug ou mon expression cron est faux:
@Scheduled(cron = "0 0 * * * *")
Ma principale préoccupation en ce moment est pourquoi je reçois ScheduledAnnotationBeanPostProcessor
erreurs? C'est la recherche d'un TaskScheduler et ScheduledExectorService. J'ai juste besoin d'incendie une fois par jour. Je ne suis pas en faisant tout le traitement simultané ou lorsque j'ai besoin de plusieurs threads. En fin de compte de ces erreurs nuisibles OU dois-je le corriger?
OriginalL'auteur logixplayer | 2015-05-25
Vous devez vous connecter pour publier un commentaire.
EDIT: la meilleure réponse est ici et elle implique la création d'un Exécuteur testamentaire:
PRÉCÉDENTE (valide):
La NoSuchBeanDefinitionException est enregistré avec une version de DÉBOGAGE de la gravité et peut être ignoré en toute sécurité. Si vous regardez le code source de ScheduledAnnotationBeanPostProcessor, vous voyez qu'il essaie d'abord d'obtenir un TaskScheduler, puis un ScheduledExecutorService, puis il continue à aller sur "retomber à défaut planificateur":
Vous pouvez supprimer l'exception par la mise en au moins une INFO sur la gravité
org.springframework.de la planification.annotation.ScheduledAnnotationBeanPostProcessor, comme
lors de l'utilisation de logback.
L'expression cron a six champs:
La syntaxe peut être trouvé dans la quartz docs.
Je ne suis pas sûr au sujet du caractère "?" parce que, bien que la page me dit que
les exemples sur cette page en fait utiliser ? même quand l'autre champ est *.
À mon humble avis, tout devrait fonctionner avec à peu *, afin d'exécuter tous les minuit, l'expression doit être
OriginalL'auteur xtian
selon exception Info "impossible de trouver le défaut TaskScheduler bean", la config de définir "TaskScheduler" plutôt que "Exécuteur testamentaire"
}
OriginalL'auteur randy
Je suis d'accord, vous pouvez l'ignorer, mais juste en changeant la gravité ne sera pas le fixer. J'ai eu le même problème mais je suis en utilisant xml au lieu d'annotations, et dans mon cas, c'est arrivé parce que je n'ai pas inclus l'exécuteur sur mon haricot définition. Ainsi, l'ajout de ce qu'il est corrigé:
J'espère que cela aide.
Ce qui concerne.
OriginalL'auteur Eduardo G
Pour résoudre ce problème il suffit de créer le planificateur de tâches bean dans le fichier config.
OriginalL'auteur ABHAY JOHRI
Avec Spring Boot 2.0.5, je reçois:
La seule façon de se débarrasser de lui, semble être l'utilisation d'
SchedulingConfigurer
interface dans votre@Configuration
classe comme ceci:Note: Ceci a été pris de https://www.callicoder.com/spring-boot-task-scheduling-with-scheduled-annotation/
OriginalL'auteur Wim Deblauwe