Spring Boot – Configuración automática

Spring Boot está atrayendo fuertemente a los desarrolladores debido a las tres características principales que se detallan a continuación:

  1. Autoconfiguración: como verificar las dependencias, la presencia de ciertas clases en el classpath, la existencia de un bean o la activación de alguna propiedad.
  2. Un enfoque obstinado de la configuración.
  3. La capacidad de crear aplicaciones independientes.
  • La anotación @Conditional actúa como base para las extensiones de anotación de configuración automática de Spring Boot.
  • Registra automáticamente los beans con @Component, @Configuration, @Bean y meta-anotaciones para crear anotaciones estereotipadas personalizadas, etc.
  • La anotación @EnableAutoConfiguration se usa para habilitar la función de configuración automática.
  • La anotación @EnableAutoConfiguration habilita la configuración automática de Spring ApplicationContext al escanear los componentes de classpath y registrar los beans.
  • Esta anotación está dentro de la anotación @SpringBootApplication junto con las anotaciones @ComponentScan y @SpringBootConfiguration.
  • Al ejecutar el método main(), esta anotación inicia la configuración automática.

Implementación: Bootstrapping de la aplicación

Java

// Java Program to Illustrate Bootstrapping of Application
  
package gfg;
  
// Importing required classes
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  
// Annotation
@SpringBootApplication
  
// Class
public class GfgApplication {
  
    // Main driver method
    public static void main(String[] args)
    {
        SpringApplication.run(GfgApplication.class, args);
    }
}

Nota : debe usar la anotación ‘@EnableAutoConfiguration’ solo una vez en su aplicación.

  • ‘spring-boot-autoconfigure.jar’ es el archivo que se ocupa de toda la configuración automática.
  • Toda la lógica de configuración automática para MVC, datos, JMS y otros marcos está presente en un solo contenedor

R: Dependencias

  • La configuración automática es el foco principal del desarrollo de Spring Boot.
  • Nuestra aplicación Spring necesita un conjunto respectivo de dependencias para funcionar.
  • Spring Boot configura automáticamente un preajuste de las dependencias requeridas sin necesidad de configurarlas manualmente.
  • Esto ayuda mucho y se puede ver cuando queremos crear una aplicación independiente.
  • Cuando construimos nuestra aplicación, Spring Boot se ocupa de nuestras dependencias y configura Spring Framework subyacente y las dependencias jar requeridas (bibliotecas de terceros) en el classpath de acuerdo con nuestro proyecto construido.
  • Nos ayuda a evitar errores como desajustes o versiones incompatibles de diferentes bibliotecas.
  • Si desea anular estos valores predeterminados, puede anularlos después de la inicialización.

Herramienta: Experto

Ejemplo 1: 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.5.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>sia</groupId>
    <artifactId>taco-cloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>taco-cloud</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
        <vaadin.version>14.7.5</vaadin.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-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </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-jersey</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web-services</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>com.vaadin</groupId>
            <artifactId>vaadin-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-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-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-hateoas</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-rest</artifactId>
        </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>
  
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.vaadin</groupId>
                <artifactId>vaadin-bom</artifactId>
                <version>${vaadin.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <profiles>
        <profile>
            <id>production</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.vaadin</groupId>
                        <artifactId>vaadin-maven-plugin</artifactId>
                        <version>${vaadin.version}</version>
                        <executions>
                            <execution>
                                <id>frontend</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>prepare-frontend</goal>
                                    <goal>build-frontend</goal>
                                </goals>
                                <configuration>
                                    <productionMode>true</productionMode>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

Comprensión de la configuración automática de dependencias

  • Cuando crea un proyecto Spring Boot, la dependencia ‘Principal inicial’ se agrega automáticamente en el archivo ‘pom.xml’.
  • Notifica que los valores predeterminados «sensibles» esenciales para la aplicación se han configurado automáticamente y, por lo tanto, puede aprovecharlos.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>...</version>
</parent>
  • Para agregar la dependencia (biblioteca de pilas tecnológicas), no es necesario que mencione la versión porque Spring Boot la configura automáticamente.
  • Además, cuando actualice/cambie la versión de Spring Boot, todas las versiones de las dependencias agregadas también se actualizarán/cambiarán.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
  • Es la configuración automática de Spring Boot la que nos facilita enormemente la gestión de las dependencias.
  • Con la ayuda de habilitar el ‘registro de depuración’ en el archivo ‘application.properties’, podemos saber más sobre la configuración automática.
logging.level.org.springframework: DEBUG  

Herramienta B: Gradle

Ejemplo 2: 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")
   testCompile("org.springframework.boot:spring-boot-starter-test")
}

B: Aplicación de primavera

Ilustración: Clase   

  1. @Bean es una anotación a nivel de método.
  2. La anotación @Bean especifica que un método produce un valor de retorno registrado como un bean (datos) con BeanFactory, administrado por Spring Container.
  3. Este programa Java en particular usa la anotación @Configuration que especifica que la clase contiene una o más anotaciones @Bean que ayudan a registrarse (inicializar) automáticamente en el contenedor Spring (contexto de aplicación Spring).
  4. @Configuration es una anotación de nivel de clase.

Ejemplo

Java

// Java Program Illustrating Configuration of
// DataSourceConfiguration of DataSource
  
package gfg;
  
// Importing required classes
import javax.sql.DataSource;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
  
// Annotation
@Configuration
  
// Class
public class ConfigDataSource {
  
    // Annotation
    @Bean public static DataSource source()
    {
  
        DataSourceBuilder<?> dSB
            = DataSourceBuilder.create();
        dSB.driverClassName("com.mysql.jdbc.Driver");
  
        // MySQL specific url with database name
        dSB.url("jdbc:mysql://localhost:3306/userdetails");
  
        // MySQL username credential
        dSB.username("user");
  
        // MySQL password credential
        dSB.password("password");
  
        // builds and returns a new
        // configured datasource object
        return dSB.build();
    }
}

Nota: la función de configuración automática de Java Spring Boot Framework le permite comenzar a desarrollar sus aplicaciones basadas en Spring rápidamente y reduce la posibilidad de errores humanos.

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 *