Eu tenho um aplicativo Spring Boot. Eu adicionei muitas dependências (infelizmente, parece que preciso de todas elas) e o tempo de inicialização aumentou bastante. Basta fazer isso SpringApplication.run(source, args)
leva 10 segundos.
Embora isso possa não ser muito comparado ao que estamos "acostumados", estou infeliz que demore tanto, principalmente porque quebra o fluxo de desenvolvimento. O aplicativo em si é bastante pequeno neste ponto, então presumo que a maior parte do tempo esteja relacionado às dependências adicionadas, não às próprias classes do aplicativo.
Presumo que o problema seja a digitalização do classpath, mas não tenho certeza de como:
- Confirme se é o problema (ou seja, como "depurar" o Spring Boot)
- Se for realmente a causa, como posso limitá-la para que fique mais rápida? Por exemplo, se eu souber que alguma dependência ou pacote não contém nada que o Spring deva verificar, há uma maneira de limitar isso?
Presumo que aprimorar o Spring para ter inicialização de bean paralelo durante a inicialização aceleraria as coisas, mas essa solicitação de aprimoramento está aberta desde 2011, sem nenhum progresso. Vejo alguns outros esforços no próprio Spring Boot, como as melhorias de velocidade do Investigue Tomcat JarScanning , mas isso é específico do Tomcat e foi abandonado.
Este artigo:
embora voltado para testes de integração, sugere o uso lazy-init=true
, porém não sei como aplicar isso a todos os beans do Spring Boot usando a configuração Java - alguma indicação aqui?
Quaisquer (outras) sugestões serão bem-vindas.
@ComponentScan
eles também serão verificados. Outra coisa é certificar-se de que você não habilitou o registro de depuração ou rastreamento, pois geralmente o registro é lento, muito lento.