Je suis este pour construire une application de base avec Spring. Elle fonctionne parfaitement tant que je respecte cette structure de sous-répertoires :
src
main
java
hello
Si je déplace mon Application.java
y ScheduledTasks.java
à partir du paquet hello, j'obtiens l'erreur suivante :
** WARNING ** : Your ApplicationContext is unlikely to start due to a `@ComponentScan` of the default package.
Et quelques secondes plus tard, en effet...
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.context.annotation.AnnotationConfigApplicationContext@71fa8894: startup date [Wed Jan 18 22:19:12 CET 2017]; root of context hierarchy
Ma question est la suivante : pourquoi dois-je mettre mes classes dans un paquet ? Quelle en est l'utilité ? Comment puis-je éviter cette erreur ? Ai-je vraiment besoin d'utiliser des packages s'il s'agit d'une application vraiment simple ?
1 votes
Vérifiez : docs.spring.io/spring-boot/docs/current/reference/html/ . Votre
@ComponentScan
est de scanner chaque classe dans chaque jar dans votre classpath entier. C'est mauvais.1 votes
Pour la même raison que vous ne gardez pas tous vos papiers d'affaires dans une pile géante sur le sol de votre bureau.
1 votes
"Comment puis-je éviter cette erreur ?" Ne créez pas de classes dans le par défaut paquet.