¿Cuándo está lista la aplicación de Spring Boot para recibir solicitudes HTTP?
Tengo:
- múltiples
ApplicationRunners
- y múltiples trabajos
@Scheduled
que se ejecutan inmediatamente después de que la aplicación comienza y periódicamente después de eso.
Quiero escribir un mensaje en el registro cuando la aplicación esté lista para manejar solicitudes HTTP; de esta manera, puedo verificar que se hayan ejecutado todos los trabajos necesarios antes de que la aplicación pueda aceptar solicitudes HTTP.
- P1: ¿Cómo / dónde escribir este mensaje en el registro?
- P2: ¿Cómo ejecutar código antes de aceptar solicitudes HTTP?
Nota: mi aplicación extiende SpringBootServletInitializer
.
davy.ai
Solución
P1: ¿Cómo/Dónde escribir este mensaje de registro?
Para escribir un mensaje de registro cuando la aplicación esté lista para manejar solicitudes HTTP, podemos implementar un bean de tipo
ApplicationListener<applicationreadyevent>
y sobrescribir el métodoonApplicationEvent
. Este método se llama una vez que el contexto de la aplicación se ha cargado y está listo para aceptar solicitudes HTTP.El código para esto puede verse así:
P2: ¿Cómo ejecutar código antes de aceptar solicitudes HTTP?
Para ejecutar código antes de aceptar solicitudes HTTP, podemos implementar un bean de tipo
ServletWebServerFactory
y sobrescribir el métodogetWebServer
. Dentro de este método, podemos agregar cualquier código de configuración necesario antes de que se inicie el servidor web.El código para esto puede verse así:
Nota: si la aplicación extiende
SpringBootServletInitializer
, podemos sobrescribir el métodoconfigure
y agregar cualquier código de configuración necesario antes de que se inicie la aplicación.