Spring Boot: cree una configuración automática personalizada

Por lo general, podríamos estar tomando un proyecto maven o un proyecto de calificación para proyectos relacionados con Spring Boot. Agregaremos las dependencias en pom.xml (en caso de un proyecto maven). En una aplicación de Spring, la configuración automática de Spring Boot ayuda a configurar automáticamente comprobando las dependencias de jar que hemos agregado. Por ejemplo, aunque no se proporcionan beans específicamente para beans relacionados con la base de datos debido a la existencia de una base de datos jar/dependencia de base de datos en pom.xml, la función de configuración automática de Spring Boot lo configura automáticamente en el proyecto.

@SpringBootApplication = @ComponentScan + @EnableAutoConfiguration + @Configuration

Por lo tanto, el código que tiene @SpringBootApplication se encargará de realizar la configuración automática automáticamente. No debe preocuparse por usar la anotación @EnableAutoConfiguration. 

dependencia spring-boot-starter-web

Si se proporciona esta dependencia, busca Spring MVC (Model View Controller) en el classpath. También configura automáticamente DispatcherServlet y, además, los archivos web jar que se requieren para hacer MVC funcionalmente y se establece un error predeterminado.

dependencia spring-boot-starter-data-jpa

Automáticamente configura una fuente de datos y un Entity Manager. Veamos la configuración automática de Spring Boot a través de un proyecto de ejemplo

Proyecto de ejemplo

Estructura del proyecto: 

Project Structure

 

Este es el proyecto impulsado por maven

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.2.2.RELEASE</version>
      <relativePath />
   </parent>
   <groupId>com.javatpoint</groupId>
   <artifactId>spring-boot-autoconfiguration-example</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>spring-boot-autoconfiguration-example</name>
   <description>Demo project for Spring Boot</description>
   <properties>
      <java.version>1.8</java.version>
   </properties>
   <dependencies>
      <!-- Need to specify the dependencies for spring boot project -->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.apache.tomcat</groupId>
         <artifactId>tomcat-jasper</artifactId>
         <version>9.0.30</version>
      </dependency>
      <dependency>
         <groupId>com.h2database</groupId>
         <artifactId>h2</artifactId>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
         <exclusions>
            <exclusion>
               <groupId>org.junit.vintage</groupId>
               <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

Veamos los archivos importantes en el proyecto.

Ilustración de SpringBootAutoconfigurationExampleApplication.java

Java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  
// @SpringBootApplication=@ComponentScan+@EnableAutoConfiguration+@Configuration
@SpringBootApplication
public class IllustrationOfSpringBootAutoconfigurationExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(IllustrationOfSpringBootAutoconfigurationExampleApplication.class, args);
    }
}

Veamos el archivo del controlador.

SampleControllerDemo.java

Java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
  
@Controller
public class SampleControllerDemo {
    @RequestMapping("/")
    public String home() {
        return "homePage.jsp";
    }
}

GeekUser.java

Java

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
  
@Entity
// This table will be created and we can view the data
// as we are inserting the data in the sql
@Table(name = "geekuserdata")
public class GeekUser {
    @Id private int id;
    private String username;
    
    private String noOfPosts;
    private String proficiencies;
  
    public String getUsername() { return username; }
  
    public void setUsername(String username)
    {
        this.username = username;
    }
  
    public String getNoOfPosts() { return noOfPosts; }
  
    public void setNoOfPosts(String noOfPosts)
    {
        this.noOfPosts = noOfPosts;
    }
  
    public String getProficiencies()
    {
        return proficiencies;
    }
  
    public void setProficiencies(String proficiencies)
    {
        this.proficiencies = proficiencies;
    }
  
    public int getId() { return id; }
  
    public void setId(int id) { this.id = id; }
  
    public String getUname() { return username; }
  
    public void setUname(String username)
    {
        this.username = username;
    }
  
    @Override public String toString()
    {
        return "GeekUser [id=" + id + ", uname=" + username
            + ", noOfPosts = " + noOfPosts
            + ", proficiencies= " + proficiencies + "]";
    }
}

src/main/resources/data.sql

insert into geekuserdata values(1,'Rachel','100','Java');
insert into geekuserdata values(2,'Monica','75','Python');
insert into geekuserdata values(3,'Phoebe','70','PHP');

src/main/resources/application.properties

server.port=8085 // That means the server port
spring.h2.console.enabled=true
spring.datasource.plateform=h2 //h2 is used
spring.datasource.url=jdbc:h2:mem:gfg // jdbc:h2:mem:gfg is going to get used
logging.level.org.springframework: DEBUG // With this we can see in output all the potential matches

Vamos a crear una página web llamada homePage.jsp 

src/main/webapp/homePage.jsp

HTML

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
   pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
   <head>
      <meta charset="ISO-8859-1">
      <title>Demo for Spring Boot Autoconfiguration</title>
   </head>
   <body>
      <div align="center">
         <h1>Add Geek Users</h1>
         <form action="<%=request.getContextPath()%>/addUser" method="post">
            <table style="with: 100%">
               <tr>
                  <td>ID</td>
                  <td><input type="text" name="id" /></td>
               </tr>
               <tr>
                  <td>User Name</td>
                  <td><input type="text" name="userName" /></td>
               </tr>
            </table>
            <input type="submit" value="Submit" />
         </form>
      </div>
   </body>
</html>

Ejecute el archivo ‘IllustrationOfSpringBootAutoconfigurationExampleApplication’ ahora. En la consola, podemos ver esta salida.

Output Console

 

En application.properties, si hemos habilitado

logging.level.org.springframework: DEBUG

podemos ver estas salidas adicionales en la consola

Output Console

 

Output Console

 

Al presionar http://localhost:8085/ , podemos ver el siguiente resultado, que no es más que la página JSP dada (homePage.jsp)

Output

 

De manera similar, al presionar http://localhost:8085/h2-console/

Output

 

Output

 

En la consola, si observamos detenidamente podemos ver que TransactionManagement, EntityManagerFactory y DataSource se configuran automáticamente, como se muestra en la siguiente figura.

Output Console

 

Entonces, una vez que se dan las dependencias, Spring boot configura todo automáticamente.

Publicación traducida automáticamente

Artículo escrito por priyarajtt 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 *