English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
SpringBoot-Konfiguration automatisch basierend auf den von uns hinzugefügten Jar-Abhängigkeiten die SpringBoot-Anwendung konfiguriert.
Beispielsweise, wenn H2Datenbank-Jar, und wir haben noch keine mit der Datenbank verbundenen Bean manuell konfiguriert, dann konfiguriert die automatische Konfigurationsfunktion von Spring Boot dies im Projekt automatisch.
können wir die Automatisierung aktivieren durch die Verwendung der Annotierung @EnableAutoConfiguration Funktion konfigurieren. Aber diese Annotierung wird nicht verwendet, weil sie in @SpringBootApplication in den Annotierungsinhalten. Die Annotierung @SpringBootApplication ist eine Kombination der drei Annotierungen: @ComponentScan, @EnableAutoConfiguration,和 @Configuration . Aber wir verwenden die @SpringBootApplication-Markierung anstelle von @EnableAutoConfiguration.
@SpringBootApplication = @ComponentScan + @EnableAutoConfiguration + @Configuration
wenn die Verwendung von spring im Projekt-boot-starter-web Wenn Abhängigkeiten vorhanden sind, führt Spring Boot die automatische Konfiguration von Spring MVC auf der Classpath durch. Es konfiguriert automatisch dispatcherServlet , Standard- Fehlerseiten和 Netzwerkkanne.
Ähnlich wie bei der Hinzufügung von spring-boot-starter-data-JPA-Abhängigkeiten, sehen wir, dass Spring Boot automatisch konfiguriert wird Datenquelle和 Entity Manager.
Alle automatischen Konfigurationslogiken sind in spring-boot-autoconfigure.jar wie im folgenden Diagramm gezeigt.>
Eine auf Spring basierende Anwendung erfordert viele Konfigurationen. Bei der Verwendung von Spring MVC müssen wir konfigurieren Dispatcher Servlet, View Resolver, Web Jars Nachfolgender Code zeigt die typische Konfiguration des Dispatcher Servlets in einer Webanwendung:
<servlet> <servlet-Name>dispatcher</servlet-Name> <servlet-Klasse> org.springframework.web.servlet.DispatcherServlet </servlet-Klasse> <initialisieren-Parameter> <Parameter-Name>contextConfigLocation</Parameter-Name> <Parameter-Wert>/WEB-INF/zu tun-servlet.xml</Parameter-Wert> </initialisieren-Parameter> <laden-bei-start1</laden-bei-start </servlet> <servlet-Mapping> <servlet-Name>dispatcher</servlet-Name> <url-Muster>/</URL-Muster> </servlet-Mapping>
Ähnlich wie bei der Verwendung von Hibernate/Bei der Verwendung von JPA müssen wir Datenquellen, Transaktionsmanager, Entity Manager Factory und vieles mehr konfigurieren.
Datenquellenkonfiguration
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" zerstören-method="close"> <property name="driverClass" value="${db.driver}" /><br <property name="jdbcUrl" value="${db.url}" /><br <property name="user" value="${db.username}" /><br <property name="password" value="${db.password}" /><br </bean> <jdbc:initialize-Datenbankdaten-source="dataSource"> <jdbc:script location="classpath:config/schema.sql" /><br <jdbc:script location="classpath:config/data.sql" /><br </jdbc:initialize-database>
Konfigurieren Sie die Entity-Manager-Fabrik
<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory" <property name="persistenceUnitName" value="hsql_pu" /><br <property name="dataSource" ref="dataSource" /><br </bean>
Konfigurieren Sie den Transaktionsmanager
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /><br <property name="dataSource" ref="dataSource" /><br </bean> <tx:annotation-driven transaction-manager="transactionManager"/><br
Wenn wir nicht von der Anwendung verwendet werden möchten, können wir auch bestimmte automatische Konfigurationsklassen deaktivieren. Wir verwenden die Annotation @EnableAutoConfiguration exclude Eigenschaften, um die automatische Konfigurationsklasse zu deaktivieren. Zum Beispiel:
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 "{ }
Wenn die Klasse nicht im Classpath ist, können wir die Eigenschaft des Annotations @EnableAutoConfiguration verwenden excludeName 并指定类的 qualified 名称。我们可以使用属性 spring.autoconfigure.exclude 排除任何数量的自动配置类。
在以下示例中,我们将看到Spring Boot的自动配置功能如何工作。
Schritt1: 打开spring Initializr https://start.spring.io/.
第2步: 组名称。我们提供了 com.w3codebox .
Schritt3: 提供 工件 ID。我们提供了 spring-boot-autoconfiguration-example .
Schritt4: 添加依赖项: Spring Web,Spring Data JPA,一个 H2数据库.
Schritt5: 单击 Generate (生成)按钮。当我们单击"生成"按钮时,它会将项目包装在 Jar 文件中,并将其下载到本地系统。
第6步: 提取 Jar文件并将其粘贴到STS工作区中。
Schritt7: 将项目文件夹导入STS。
文件->导入->现有Maven项目->浏览->选择文件夹spring-boot-autoconfiguration-example->完成
导入需要一些时间。
Schritt8: 在目录中创建名称为 com.w3codebox.controller 的程序包。文件夹 src/main/java .
Schritt9: 在包中创建名称为 ControllerDemo 的Controller类。3codebox.controller 。
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"; } }
Schritt10: 在文件夹 src/main/java 中创建另一个名为 com.w3codebox.model 的包。
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 + "]"; } }
现在,我们需要配置H2数据库。
Schritt12: Öffnen application.properties 文件并配置以下内容: 端口,启用H2控制台,数据源,和 URL。
application.properties
server.port=8085 spring.h2.console.enabled=true spring.datasource.platform=h2 spring.datasource.url=jdbc:h2:mem:w3codebox
Schritt13: 在文件夹 src/main/resources中创建一个 SQL Datei.
Rechtsklick auf src/main/resources文件夹->Neu->Datei->提供文件名->完成
我们提供了文件名 data.sql 并将以下数据插入其中。
data.sql
insert into userdata values(101Tom'); insert into userdata values(102Andrew'); insert into userdata values(103Tony'); insert into userdata values(104Bob'); insert into userdata values(105Sam');
Schritt14: 在 src 文件夹中创建一个名称为 webapp 的文件夹。
Schritt15: 使用我们在 ControllerDemo 中返回的名称创建一个JSP文件。在ControllerDemo.java中,我们返回了 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>Einfügen Sie hier einen Titel</title> </<title> <head> <body> <form action="addUser"> /><br Benutzername:<br1<input type="text" name="t /><br ID:<br /><br Benutzername:<br2<input type="text" name="t /><br > </<input type="submit" value="Add"> </form> </body>
Schritt16: 运行 html> SpringBootAutoconfigurationExampleApplication.java 8085 laufen. Die Datei. Wir können im Terminal sehen, dass unsere Anwendung erfolgreich auf dem Port
Schritt17: 打开浏览器并调用URL http: //localhost: 8085/h2-console/. Es zeigt an, was wir in application.properties in der Datei konfigurierten Klassendatei des, JDBC URL , sowie den Standardbenutzernamen sa .
Wir können die Verbindung auch durch Klicken auf die Schaltfläche testen Verbindung testenSchaltfläche. Wenn die Verbindung erfolgreich ist, wird eine Nachricht angezeigt Test erfolgreich.
Schritt18: 单击 VerbindungSchaltfläche. Sie zeigt die Tabelle an, die wir im User.java-Datei definiert haben userdata Struktur.
Schritt19: Führen Sie die folgenden Abfragen aus, um zu sehen, was wir eingefügt haben data.sql Daten aus der Datei
SELECT * FROM USERDATA;
Lassen Sie uns die Konsole genau betrachten. Wir sehen TransactionManagement, DispatcherServlet, EntityManagerFactory,和 DataSource wird automatisch konfiguriert, wie im folgenden Bild gezeigt.
Wir können auf folgende Weise mehr über die Automatische Konfiguration finden: Verwenden Sie folgende beiden Methoden:
Öffnen Sie das Debugging des Protokollierens Verwenden Sie Spring Boot ExecutorÖffnen Sie das Debugging des Protokollierens
Wir können durch application.properties Eigenschaften hinzufügen, um das Protokollierungsdatei-Debugging zu aktivieren. Lassen Sie uns das Debugging des Protokollierens im obigen Beispiel implementieren. Öffnen Sie application.properties Datei und fügen Sie die folgenden Eigenschaften hinzu:
logging.level.org.springframework: DEBUG
Starten Sie nun die Anwendung neu. Wir sehen, dass im Log eine automatische Konfigurationsberichterstattung gedruckt wird. Der Bericht umfasst alle automatischen Konfigurationsklassen. Er ist in zwei Teile unterteilt: Positiver Match和 Negativer Matchwie im folgenden Bild gezeigt.
Positiver Match
Negativer Match
Spring Boot Executor
Wir können auch durch die Verwendung von Actuator Debugging der Automatischen Konfiguration. Wir werden auch HAL-Browserum die Bedienung zu vereinfachen.
Lassen Sie uns ein Beispiel für Spring Boot Actuator erstellen.
Schritt1: Öffnen Sie Spring Initializr http://start.spring.io 。
Schritt2: 提供 组名称。我们提供了 com.w3codebox。
Schritt3: 提供 工件 ID。我们提供了 执行器自动配置示例。
Schritt4: 添加依赖项: Spring Web 和 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>
Schritt5: 单击 Generate (生成)按钮。它将与项目相关的所有规范绑定到一个 jar 文件中,并将其下载到我们的本地系统中。
Schritt6: 提取下载的jar文件。
Schritt7: 使用以下步骤导入项目文件夹:
文件->导入->现有Maven项目->下一步->浏览- >选择项目文件夹->完成
导入项目后,我们可以在IDE的 Package Explorer 部分中看到以下目录结构。
Schritt8: 在包中创建Controller类 com.w3codebox。我们创建了一个名为 DemoRestController的控制器类。
在Controller中,我们定义了一个名为 hello( ),它返回一个字符串。
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."; } }
Schritt9: 运行 ActuatorAutoConfigurationExampleApplication.java Datei.
Schritt10: 打开浏览器并调用URL http: //localhost: 8080/hello 。它返回我们在控制器中指定的字符串。
现在调用执行器URL http: //localhost: 8080/actuator 。它将启动显示以下三个URL的执行器: self , "health 和 info ,如下所示。
{"_links":{"self":{"href":"http://localhost:8080/{"actuator","templated":false}//localhost:8080/actuator/"health","templated":false},"health"}-"path":{"href":"http://localhost:8080/actuator/"health/"{*"path":"","templated":true},"info":{"href":"http://localhost:8080/actuator/{"info":{"href":"http:
Schritt11: Öffnen pom.xml Datei und fügen Sie hinzu HAL-BrowserAbhängigkeiten.
<dependency> <groupId>org.springframework.data</<groupId> <artifactId>spring-data-rest-hal-browser</artifactId> </dependency>
Schritt12: Führen Sie erneut aus ActuatorAutoConfigurationExampleApplication.java Datei.
Um den HAL-Browser zu erreichen, geben Sie ein http://localhost:8080 Geben Sie im Browser ein, dann drücken Sie die Enter-Taste.
Jetzt können wir den Executoren über den HAL-Browser erreichen.
Geben Sie im Textfeld des Ressourcenmanagers ein /actuator dann klicken Sie auf Go >Schaltfläche.
Es zeigt die Beziehungen zu den Executoren. Der wichtigste beans .
Wenn wir auf den Pfeil des Beans klicken, wird alles angezeigt
Das obige Diagramm zeigt alle automatisch konfigurierten beans detaillierte Informationen.