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:
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.
En application.properties, si hemos habilitado
logging.level.org.springframework: DEBUG
podemos ver estas salidas adicionales en la consola
Al presionar http://localhost:8085/ , podemos ver el siguiente resultado, que no es más que la página JSP dada (homePage.jsp)
De manera similar, al presionar http://localhost:8085/h2-console/
En la consola, si observamos detenidamente podemos ver que TransactionManagement, EntityManagerFactory y DataSource se configuran automáticamente, como se muestra en la siguiente figura.
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