CodeGym /Cursos /Módulo 5. Spring /Uso de Spring Boot DevTools

Uso de Spring Boot DevTools

Módulo 5. Spring
Nivel 4 , Lección 7
Disponible

Spring Boot DevTools — es un módulo creado para acelerar y mejorar la experiencia de desarrollo de aplicaciones con Spring Boot. Su objetivo principal es reducir el tiempo de reinicio de la aplicación y ayudar a automatizar tareas rutinarias, como recargar tras cambios, gestionar cachés y hasta actualizar el navegador.

Principales capacidades de Spring Boot DevTools:

  • Recarga automática de la aplicación cuando cambias código.
  • Desactivación de caché, para que el desarrollo sea más rápido (por ejemplo, para que los cambios en plantillas Thymeleaf o en datos sean visibles al instante).
  • LiveReload para actualizar automáticamente el navegador cuando el proyecto cambia.

Spring Boot DevTools ha sido la salvación para desarrolladores cansados de reiniciar manualmente las aplicaciones tras cada pequeño cambio. Es como si tuvieras un "robot compilador" fiel que reinicia el servidor por ti. ¿No mola?


Conexión de Spring Boot DevTools

Empecemos por lo básico. Para usar DevTools, solo tienes que añadir la dependencia al proyecto.

Si usas Maven, añade la siguiente dependencia en el archivo pom.xml:


<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>runtime</scope>
</dependency>

Para Gradle haz lo mismo en build.gradle:


implementation 'org.springframework.boot:spring-boot-devtools'
¡Importante!

DevTools está pensado solo para desarrollo. En un entorno productivo no tiene efecto, ya que sus dependencias están marcadas como runtime o developmentOnly. Spring lo desactiva automáticamente en modo production.


Recarga automática de la aplicación

¿Qué pasa entre bastidores?

Spring Boot DevTools usa la librería Spring Loaded o el Restart ClassLoader para vigilar los cambios en tu proyecto. Cuando detecta cambios, DevTools recarga automáticamente solo el código modificado sin reiniciar todo el contexto de la aplicación. Esto acelera muchísimo tu flujo de trabajo.

¿Cómo funciona?

Si todo está bien configurado, no tienes que hacer nada más. Simplemente modifica cualquier archivo (ya sea código Java, ajustes en application.properties, plantillas, etc.) y guarda. La aplicación se recargará automáticamente.

Por ejemplo, tienes este controlador:


@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, DevTools!";
    }
}

Ahora cambia el valor devuelto por el método sayHello() a otro, por ejemplo "Hello, Spring Boot!". Cuando guardes los cambios, DevTools actualizará la aplicación automáticamente y los nuevos datos estarán disponibles sin necesidad de detener y volver a arrancar el servidor.

Qué tener en cuenta

  1. DevTools recarga las clases que están en src/main/java, pero ignora cambios en las dependencias (p. ej. en src/test/java o en librerías añadidas vía Maven/Gradle).
  2. Si los cambios afectan a la configuración del servidor embebido (por ejemplo, el puerto o ajustes HTTPS), la aplicación puede necesitar un reinicio manual.

4. LiveReload: actualización automática del navegador

LiveReload es una funcionalidad extra de DevTools que actualiza el navegador automáticamente cuando modificas código o archivos del proyecto. Es especialmente útil cuando trabajas con interfaces o plantillas (por ejemplo, si usas Thymeleaf).

Para usar LiveReload tienes que instalar una extensión en el navegador. Aquí tienes el enlace al sitio oficial de LiveReload, donde puedes descargar la extensión para tu navegador.

¿Cómo activar LiveReload?

LiveReload viene activo en DevTools por defecto. Tras arrancar la aplicación asegúrate de que la extensión LiveReload en el navegador está activa. Ahora, si cambias, por ejemplo, una plantilla Thymeleaf, la página se actualizará automáticamente.

Prueba esta plantilla Thymeleaf:


<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>Hello DevTools</title>
</head>
<body>
  <h1 th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>

Ahora, si cambias algo en la plantilla, por ejemplo h1 por h2, el navegador mostrará la nueva versión al instante sin recargar manualmente la página.


Desactivar DevTools

Los que trabajan con proyectos grandes saben que la recarga automática puede ser demasiado costosa cuando hay mucho código. En esos casos puedes desactivar DevTools parcial o totalmente.

Desactivar la recarga automática

Cambia el archivo application.properties:


spring.devtools.restart.enabled=false

Desactivar LiveReload

Si no necesitas LiveReload, añade en application.properties:


spring.devtools.livereload.enabled=false

Ahora la aplicación ya no actualizará el navegador automáticamente.


Configurar DevTools para máxima comodidad

DevTools se puede ajustar a tu gusto. Aquí tienes algunos parámetros útiles:

Parámetro Descripción
spring.devtools.restart.enabled Activar/desactivar la recarga automática
spring.devtools.livereload.enabled Activar/desactivar LiveReload
spring.devtools.restart.additional-paths Rutas adicionales a vigilar
spring.devtools.restart.exclude Excluir archivos o directorios del watch (por ejemplo, logs)
spring.devtools.remote.secret Protección para acceso remoto vía DevTools

Ejemplo usando additional-paths y exclude

Supongamos que tienes el directorio src/main/resources/static, donde guardas archivos estáticos. Quieres que DevTools vigile esa carpeta y recargue la aplicación. Añade lo siguiente en application.properties:


spring.devtools.restart.additional-paths=src/main/resources/static
spring.devtools.restart.exclude=*.log

Consejos útiles y errores típicos

Consejos

  • Asegúrate de que DevTools está añadido solo como dependencia de desarrollo. Habilitar DevTools en production puede crear riesgos de seguridad innecesarios.
  • Si trabajas en equipo, verifica que todos los desarrolladores tengan configuraciones similares de DevTools para evitar discrepancias.
  • Usa DevTools junto con LiveReload si trabajas mucho en la interfaz de usuario. Esto acelera el flujo de trabajo considerablemente.

Errores típicos

A veces DevTools no recarga la aplicación. Revisa lo siguiente:

  • ¿Hay errores en la consola del IDE? Algunas librerías pueden chocar con DevTools.
  • Asegúrate de que estás en modo desarrollo. En production DevTools está inactivo.
  • Si los cambios no se aplican, confirma que los estás haciendo en el directorio src/main.

¿Cómo ayuda DevTools en la práctica?

Spring Boot DevTools es un must-have para desarrolladores activos. Es especialmente útil si:

  • Modificas constantemente controladores, servicios o plantillas.
  • Trabajas en modo prototipado rápido, y cada segundo cuenta.
  • Planeas integrar interfaces complejas con la parte backend.

Con DevTools tu flujo de trabajo será no solo más rápido, sino también más cómodo, permitiéndote concentrarte en lo que mola de verdad: escribir código.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION