English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SpringBoot configura automaticamente l'applicazione SpringBoot in base alle dipendenze JAR aggiunte.
Ad esempio, se esiste un JAR di database H2 nella classpath e non abbiamo configurato manualmente alcun bean relativo al database, la funzione di configurazione automatica di Spring Boot lo configurerà automaticamente nel progetto.
Possiamo abilitare l'automatico utilizzando l'annotazione @EnableAutoConfiguration funzionalità di configurazione. Tuttavia, questa annotazione non viene utilizzata perché è racchiusa in @SpringBootApplication nelle annotazioni. L'annotazione @SpringBootApplication è una combinazione di tre annotazioni: @ComponentScan, @EnableAutoConfiguration,e @Configuration 。Ma, usiamo @SpringBootApplication anziché @EnableAutoConfiguration.
@SpringBootApplication = @ComponentScan + @EnableAutoConfiguration + @Configuration
Quando si aggiunge Utilizzando spring-boot-starter-web nel progetto Quando si aggiunge la dipendenza, Spring Boot configura automaticamente Spring MVC nella classpath. Configura automaticamente dispatcherServlet ,di default Pagina di erroree Barile di rete。
Analogamente, quando aggiungiamo la dipendenza spring-boot-starter-data-jpa, vediamo che Spring Boot configura automaticamente fonte datie gestore delle entità。
Tutta la logica di configurazione automatica è in spring-boot-autoconfigure.jar come illustrato nella figura sottostante.
Un'applicazione basata su Spring richiede molte configurazioni. Quando si utilizza Spring MVC, dobbiamo configurare dispatcher servlet, resolver delle viste, Web jars Ecco un esempio di configurazione tipica del servlet dispatcher in un'applicazione web:
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/todo-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
Analogamente, quando utilizziamo Hibernate/JPA, dobbiamo configurare il fonte dati, il gestore delle transazioni, la fabbrica degli oggetti entità, ecc.
Configurazione del fonte dati
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> destroy-method="close"> <property name="driverClass" value="${db.driver}" /> <property name="jdbcUrl" value="${db.url}" /> <property name="user" value="${db.username}" /> <property name="password" value="${db.password}" /> </bean> <jdbc:initialize-database data-source="dataSource"> <jdbc:script location="classpath:config/schema.sql"/> <jdbc:script location="classpath:config/data.sql"/> </jdbc:initialize-database>
配置实体管理器工厂
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory" <property name="persistenceUnitName" value="hsql_pu"/> <property name="dataSource" ref="dataSource"/> </bean>
配置事务管理器
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> <property name="dataSource" ref="dataSource"/> </bean> <tx:annotation-driven transaction-manager="transactionManager"/>
如果我们不想被应用,我们还可以禁用特定的自动配置类。我们使用注解@EnableAutoConfiguration的 exclude 属性来禁用自动配置类。例如:
import org.springframework.boot.autoconfigure.*; import org.springframework.boot.autoconfigure.jdbc.*; import org.springframework.context.annotation.*; @Configuration(proxyBeanMethods = false) @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { }
如果类不在类路径中,我们可以使用@EnableAutoConfiguration批注的属性 excludeName 并指定类的 qualified 名称。我们可以使用属性 spring.autoconfigure.exclude 排除任何数量的自动配置类。
在以下示例中,我们将看到Spring Boot的自动配置功能如何工作。
步骤1: 打开spring Initializr https://start.spring.io/。
第2步: 组名称。我们提供了 com.w3codebox 。
步骤3: 提供 工件 ID。我们提供了 spring-boot-autoconfiguration-example 。
步骤4: 添加依赖项: Spring Web,Spring Data JPA,一个 H2数据库。
步骤5: 单击 Generate (生成)按钮。当我们单击"生成"按钮时,它会将项目包装在 Jar 文件中,并将其下载到本地系统。
第6步: 提取 Jar文件并将其粘贴到STS工作区中。
步骤7: 将项目文件夹导入STS。
文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-autoconfiguration-example->完成
导入需要一些时间。
Passaggio 8: 在目录中创建名称为 com.w3codebox.controller 的程序包。文件夹 src/main/java 。
Passaggio 9: 在包中创建名称为 ControllerDemo 的Controller类。 <strong>com.w3codebox.controller。</strong>
ControllerDemo.java
package com.w3codebox.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ControllerDemo { @RequestMapping("/") public String home() { return "home.jsp"; } }
Passaggio 10: nella cartella src/main/java crea un altro chiamato com.w3codebox.model del pacchetto. p>
User.java
package com.w3codebox.model; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="userdata") public class User { @Id private int id; private String username; 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 "User [id=", + id + ", uname=", + username + "]"; } }
Ora, dobbiamo configurare il database H2.
步骤12: 打开 application.properties crea un file e configura il seguente contenuto: porta, abilita la console H2, sorgente dati,e URL.
application.properties
server.port=8085 spring.h2.console.enabled=true spring.datasource.platform=h2 spring.datasource.url=jdbc:h2:mem:w3codebox
Passaggio 13: nella cartella crea uno in src/main/resources SQL 文件。
clicca con il tasto destro sulla cartella src/main/resources -> Nuovo -> File -> Fornisci il nome del file -> Completa
abbiamo fornito il nome del file data.sql ecco i dati da inserire.
data.sql
insert into userdata values(101, 'Tom'); insert into userdata values(102, 'Andrew'); insert into userdata values(103,'Tony'); insert into userdata values(104,'Bob'); insert into userdata values(105,'Sam');
Passaggio 14: in src crea una cartella chiamata webapp cartella.
Passaggio 15: utilizzando il folder ControllerDemo crea un file JSP utilizzando il nome restituito in home.jsp 。
home.jsp
<%@page language="java" contentType="text/html; charset=ISO-8859-1" %> pageEncoding="ISO-8859-1"> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Inserisci titolo qui</title> </head> <body> <form action="addUser"> ID:<br/> <input type="text" name="t1"><br/> Nome utente:<br/> <input type="text" name="t2"><br/> <input type="submit" value="Aggiungi"> </form> </body> </html>
Passaggio 16: Esegui SpringBootAutoconfigurationExampleApplication.java vedere nel terminale che la nostra applicazione è stata eseguita con successo sulla porta 8085 in esecuzione.
Passaggio 17: Apri il browser e chiama l'URL http: //localhost: 8085/h2-console/. Mostra i dati che abbiamo definito in application.properties configurato nel file classe del driver, JDBC URL , e il nome utente predefinito sa 。
Possiamo anche testare la connessione cliccando su testa la connessionepulsante. Se la connessione è riuscita, viene visualizzato il messaggio testo di successo.
Passaggio 18: 单击 connessionepulsante. Mostra la tabella definita nel file User.java userdata struttura.
Passaggio 19: Esegui la seguente query per visualizzare i dati che abbiamo inserito data.sql 文件中的数据
SELECT * FROM USERDATA;
让我们仔细看一下控制台。我们看到 TransactionManagement,DispatcherServlet,EntityManagerFactory,e DataSource 会自动配置,如下图所示。
我们可以通过以下方法找到有关自动配置的更多信息: 使用以下两种方式:
打开调试日志记录 使用Spring Boot执行器打开调试日志记录
我们可以通过在 application.properties 中添加属性来调试日志记录文件。让我们在上面的示例中实现调试日志记录。打开 application.properties 文件并添加以下属性:
logging.level.org.springframework: DEBUG
现在重新启动应用程序。我们看到在日志中打印了一个自动配置报告。该报告包括所有自动配置的类。分为两部分: 正向匹配e 负向匹配,如下图所示。
正向匹配
否定匹配
Spring Boot执行器
我们还可以通过在项目中使用 Actuator 调试自动配置。我们还将添加 HAL浏览器,以简化操作。
让我们创建一个Spring Boot Actuator示例。
步骤1: 打开Spring Initializr http://start.spring.io 。
步骤2: 提供 组名称。我们提供了 com.w3codebox。
步骤3: 提供 工件 ID。我们提供了 执行器自动配置示例。
步骤4: 添加依赖项: Spring Web e Spring Boot Actuator。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
步骤5: 单击 Generate (生成)按钮。它将与项目相关的所有规范绑定到一个 jar 文件中,并将其下载到我们的本地系统中。
步骤6: 提取下载的jar文件。
步骤7: 使用以下步骤导入项目文件夹:
文件->导入->现有Maven项目->下一步->浏览->选择项目文件夹->完成
Dopo aver importato il progetto, possiamo vedere nel nostro IDE il seguente. Package Explorer Nella sezione vediamo la seguente struttura dei directory.
Passaggio 8: Creiamo una classe Controller nel pacchetto com.w3codebox。Creiamo una classe chiamata DemoRestController.
Nel Controller, abbiamo definito una classe controller chiamata hello( ), restituisce una stringa.
DemoRestController.java
package com.w3codebox; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DemoRestController { @GetMapping("/hello") public String hello() { return "Hello User, have a nice day."; } }
Passaggio 9: Esegui ActuatorAutoConfigurationExampleApplication.java 文件。
Passaggio 10: Apri il browser e chiama l'URL http: //localhost: 8080/hello .Restituisce la stringa specificata nel controller.
Ora chiamiamo l'URL dell'esecutore http: //localhost: 8080/actuator .Lancia l'esecutore che visualizza i seguenti tre URL: self , health e info come mostrato di seguito.
{"_links":{"self":{"href":"http://localhost:8080/actuator","templated":false},"health":{"href":"http://localhost:8080/actuator/health","templated":false},"health-path":{"href":"http://localhost:8080/actuator/health/{*path}","templated":true},"info":{"href":"http://localhost:8080/actuator/info","templated":false}}}
步骤11: 打开 pom.xml 文件并添加 HAL浏览器依赖项。
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest-hal-browser</artifactId> </dependency>
步骤12: 再次,运行 ActuatorAutoConfigurationExampleApplication.java 文件。
要访问HAL浏览器,请输入 http://localhost:8080 在浏览器中,然后按Enter键。
现在我们可以通过HAL浏览器访问执行器。
在资源管理器的文本框中输入 /actuator ,然后点击 Go 按钮。
它显示了与执行器相关的内容。执行器中最重要的是 beans 。
当我们点击bean的箭头时,它会显示所有
上图显示了所有自动配置的 beans 的详细信息。