Tengo una aplicación Spring Boot. Agregué muchas dependencias (desafortunadamente, parece que las necesito todas) y el tiempo de inicio aumentó bastante. Solo hacer una SpringApplication.run(source, args)
toma 10 segundos.
Si bien eso puede no ser mucho en comparación con lo que estamos "acostumbrados", no me satisface que requiera tanto, principalmente porque rompe el flujo de desarrollo. La aplicación en sí es bastante pequeña en este punto, así que supongo que la mayor parte del tiempo está relacionada con las dependencias agregadas, no con las clases de la aplicación en sí.
Supongo que el problema es el escaneo de classpath, pero no estoy seguro de cómo:
- Confirme que ese es el problema (es decir, cómo "depurar" Spring Boot)
- Si realmente es la causa, ¿cómo puedo limitarlo para que sea más rápido? Por ejemplo, si sé que alguna dependencia o paquete no contiene nada que Spring debería estar escaneando, ¿hay alguna forma de limitar eso?
Supongo que mejorar Spring para que tenga una inicialización de bean paralelo durante el inicio aceleraría las cosas, pero esa solicitud de mejora ha estado abierta desde 2011, sin ningún progreso. Veo algunos otros esfuerzos en Spring Boot, como Investigar mejoras de velocidad de Tomcat JarScanning , pero eso es específico de Tomcat y se ha abandonado.
Este artículo:
aunque está dirigido a pruebas de integración, sugiere usar lazy-init=true
, sin embargo, no sé cómo aplicar esto a todos los beans en Spring Boot usando la configuración de Java, ¿algún consejo aquí?
Cualquier (otra) sugerencia será bienvenida.
@ComponentScan
se analizarán. Otra cosa es asegurarse de no haber habilitado el registro de depuración o seguimiento, ya que generalmente el registro es lento, muy lento.