Arranque de primavera: herramientas de desarrollo

Debido a la abundancia de funciones que ofrece Spring Framework, se está volviendo popular día a día. Fue lanzado en el año 2003. Spring Framework es básicamente un conjunto o colección de marcos secundarios. Necesitamos escribir mucho código para establecer manualmente la configuración de la aplicación Spring. Para superar este esfuerzo tedioso y engorroso, Spring Boot , que se basa en Spring Framework, se lanzó en 2014. La moto principal del marco Spring Boot es su función de ‘ Configuración automática ‘. Esto permite a un desarrollador crear aplicaciones más rápido. Otra característica crucial de Spring Boot es su biblioteca DevTools.

Requisito previo: es importante comprender que ‘DevTools’ no es un complemento IDE, ni requiere que deba usar un IDE específico.

Arranque de primavera: herramientas de desarrollo

Working of Spring Boot - DevTools

Funcionamiento de Spring Boot – DevTools

DevTools: como sugiere su nombre, proporciona a los desarrolladores de Spring algunas herramientas de tiempo de desarrollo que facilitan el proceso de desarrollo. Algunos de estos trabajos importantes son los siguientes:

1. Reinicio automático de aplicaciones

  • Con DevTools, cuando hacemos cambios en el código Java o en el archivo de propiedades, la aplicación se actualiza con nuevos cambios.
  • Supervisa los cambios y reinicia automáticamente la aplicación.
  • Con DevTools en el classpath de la aplicación, la aplicación se carga en dos cargadores de clases diferentes en la máquina virtual de Java.
  • Un cargador de clases contiene todas las dependencias (bibliotecas) que necesitan las aplicaciones. No es probable que estos cambien con frecuencia.
  • El cargador de segunda clase contiene su código Java real, archivos de propiedades, etc. particularmente en ( src/main/path ) que probablemente cambien con frecuencia.
  • Al detectar un cambio, DevTools vuelve a cargar solo por encima del cargador de clases al reiniciar el contexto de la aplicación Spring y deja intacto otro cargador de clases, JVM.
  • Esto ayudará a reducir la cantidad de tiempo para iniciar la aplicación.
Console

Consola

  • Devtools proporciona una forma de configurar ajustes globales que no están asociados con ninguna aplicación. Este archivo se denomina .spring-boot-devtools.properties y se encuentra en $HOME.
  • Si no se configura manualmente, DevTools utilizará automáticamente los valores predeterminados.
Console

Consola

Nota : en el reinicio automático de la aplicación, los cambios en las dependencias no estarán disponibles. Porque el cargador de clases respectivo no se recarga automáticamente. Por lo tanto, después de realizar los cambios en las dependencias, debe reiniciar manualmente la aplicación para que esos cambios surtan efecto.

2. Deshabilitación automática de cachés de plantillas

  • Spring Boot ofrece varias opciones de plantillas como Thymeleaf, Groovy, FreeMarker, etc.
  • Estas plantillas están configuradas para almacenar automáticamente en caché los resultados del análisis de plantillas.
  • Por lo tanto, no es necesario que se vuelvan a analizar con todas y cada una de las requests que atienden.
  • Las plantillas almacenadas en caché dificultan la realización de cambios en las plantillas mientras se ejecuta la aplicación y ver los cambios deseados después de actualizar el navegador.
  • Incluso después de aplicar los cambios, la plantilla almacenada en caché seguirá estando en uso hasta que reinicie la aplicación.
  • Esto hace que las plantillas en caché sean deficientes desde la perspectiva del desarrollo.
  • DevTools nos ayuda con esto al deshabilitar automáticamente todo el almacenamiento en caché de plantillas.
  • Debido a esto, sus cambios aplicados ahora se reflejarán en sus plantillas después de actualizar el navegador.

Nota

  1. Además, puede activar/desactivar el almacenamiento en caché de plantillas especificando ‘ spring.thymeleaf.cache=true/false ‘ en el archivo ‘application.properties’.
  2. También puede anular otras propiedades en el mismo archivo anterior.

3. Actualización automática del navegador

  • Si hemos realizado algunos cambios en el código e intentamos guardarlo, debemos hacer clic en el botón Actualizar en el navegador cada vez para ver su efecto.
  • Este proceso automáticamente consume mucho tiempo. Siempre es útil presenciar los resultados en el navegador y omitir la actualización del navegador una y otra vez para reducir el tiempo de desarrollo.
  • DevTools nos alivia al omitir este trabajo engorroso para usted.
  • Cuando integramos y usamos DevTools, habilita automáticamente un servidor ‘LiveReload’ junto con su aplicación.
  • El servidor LiveReload no es de mucha utilidad, pero es útil cuando se combina con un complemento de navegador LiveReload correspondiente.
  • Esto hace que su navegador se actualice automáticamente cuando se realizan cambios en los archivos que su navegador sirve directa o indirectamente. Ejemplo: motores de plantillas, hojas de estilo CSS, JavaScript, etc.
  • LiveReload tiene complementos de navegador para navegadores como Google Chrome, Firefox y Safari.
  • Los navegadores Internet Explorer y Edge no tienen complementos de navegador LiveReload.
Console

Consola

4. Consola H2

  • Su aplicación también puede requerir una base de datos.
  • Spring Boot le ofrece una función muy esencial de una base de datos H2 integrada que es muy útil para fines de desarrollo.
  • Cuando agregamos la dependencia de la base de datos H2 en la compilación de la aplicación, DevTools habilitará automáticamente una consola H2.
  • Puede acceder a esta consola desde su propio navegador web.
  • Esto nos ayuda a obtener una idea o una descripción general de los datos que utiliza o maneja la aplicación.
  • Para acceder a esta consola, simplemente debe apuntar su navegador web a: http://localhost:8080/h2-console.

Para incrustar Spring Boot DevTools en la aplicación, agregue la siguiente dependencia en su proyecto construido:

gradle

Gradle -> build.gradle

dependencies {
    compile("org.springframework.boot:spring-boot-devtools")
}

OR

dependencies {
    developmentOnly("org.springframework.boot:spring-boot-devtools")
}

Ejemplo: archivo build.gradle

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.8.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'

repositories {
    jcenter()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    developmentOnly("org.springframework.boot:spring-boot-devtools")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

Experto

Maven -> pom.xml

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

Ejemplo: archivo pom.xml

XML

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>sia</groupId>
    <artifactId>GFG</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>GFG</name>
    <description>GeeksforGeeks</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
    </dependencies>
  
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Al agregar dependencias de DevTools, la palabra ‘devtools’ aparece junto al nombre de su proyecto.

Ejemplo 1: archivos de proyecto

Project - Maven

Proyecto – Experto

Ejemplo 2: Tablero de inicio

Spring Tool Suite Boot Dashboard

Panel de inicio de Spring Tool Suite

Nota :

  1. Como DevTools no es un complemento ni una funcionalidad específica de IDE, funciona igualmente bien en STS (Spring Tool Suite), IntelliJ IDEA y también Netbeans. 
  2. Además, ahora sabemos que DevTools se creó solo para fines específicos de desarrollo, es lo suficientemente inteligente como para desactivarse cuando la aplicación se implementa en un entorno de producción.

Publicación traducida automáticamente

Artículo escrito por pawardarshan461 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *