J'ai une application Spring Boot. J'ai ajouté beaucoup de dépendances (malheureusement, j'ai besoin de toutes) et le temps de démarrage a beaucoup augmenté. Faire juste un SpringApplication.run(source, args)
prend 10 secondes.
Bien que ce ne soit peut-être pas grand-chose par rapport à ce à quoi on est «habitué», je ne suis pas content que cela en prenne autant, principalement parce que cela rompt le flux de développement. L'application elle-même est plutôt petite à ce stade, je suppose donc que la plupart du temps est liée aux dépendances ajoutées, pas aux classes d'application elles-mêmes.
Je suppose que le problème est l'analyse du chemin de classe, mais je ne sais pas comment:
- Confirmez que c'est le problème (c'est-à-dire comment «déboguer» Spring Boot)
- Si c'est vraiment la cause, comment puis-je la limiter, pour qu'elle soit plus rapide? Par exemple, si je sais qu'une dépendance ou un package ne contient rien que Spring devrait analyser, y a-t-il un moyen de limiter cela?
Je suppose que l' amélioration de Spring pour avoir l'initialisation du bean parallèle au démarrage accélérerait les choses, mais cette demande d'amélioration est ouverte depuis 2011, sans aucun progrès. Je vois d'autres efforts dans Spring Boot lui-même, tels que les améliorations de la vitesse Investigate Tomcat JarScanning , mais cela est spécifique à Tomcat et a été abandonné.
Cet article:
bien que destiné aux tests d'intégration, suggère d'utiliser lazy-init=true
, mais je ne sais pas comment appliquer cela à tous les beans dans Spring Boot en utilisant la configuration Java - des pointeurs ici?
Toute (autre) suggestion serait la bienvenue.
@ComponentScan
ceux-ci, ils sont également analysés. Une autre chose est de vous assurer que vous n'avez pas activé la journalisation de débogage ou de trace car la journalisation est généralement lente, très lente.