Spring Boot está atrayendo fuertemente a los desarrolladores debido a las tres características principales que se detallan a continuación:
- 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.
- Un enfoque obstinado de la configuración.
- 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
- @Bean es una anotación a nivel de método.
- 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.
- 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).
- @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