Heim  >  Artikel  >  Java  >  So verwenden Sie den eingebetteten SpringBoot-Webcontainer

So verwenden Sie den eingebetteten SpringBoot-Webcontainer

PHPz
PHPznach vorne
2023-05-13 23:34:041481Durchsuche

Eingebetteter Webcontainer: Der Server (Tomcat) ist in die Anwendung integriert und es ist nicht erforderlich, den Server extern zu konfigurieren.

Prinzip

  • Das SpringBoot-Projekt wird gestartet und es wird festgestellt, dass es sich um eine Webanwendung handelt. und das Web-Szenario-Paket wird eingeführt -----wie: Tomcat

  • Die Webanwendung erstellt eine Webversion des IOC-Containers ServletWebServerApplicationContext

  • ServletWebServerApplicationContext. Suchen Sie beim Start nach der ServletWebServerFactory (Servlets Webserver-Factory). , wird zum Erstellen von Servlet-Servern verwendet)

  • ServletWebServerFactory Unten befinden sich standardmäßig viele Webserver-Factorys

So verwenden Sie den eingebetteten SpringBoot-Webcontainer

  • Die untere Ebene wird automatisch konfiguriert. Die automatische Konfigurationsklasse ServletWebServerFactoryAutoConfiguration

  • ServletWebServerFactoryAutoConfiguration importiert die ServletWebServerFactoryConfiguration-Factory-Konfigurationsklasse

ServletWebServerFactoryConfiguration.

So verwenden Sie den eingebetteten SpringBoot-Webcontainer

  • Bestimmen Sie dynamisch, welche Webserverkonfiguration in das System importiert wird. Wenn das Paket

  • Tomcat-Abhängigkeiten importiert, wird automatisch eine Tomcat-Server-Factory erstellt . TomcatServletWebServerFactory erstellt für uns die Tomcat-Serverfabrik

  • Die unterste Ebene von Tomcat unterstützt die folgenden Server

So verwenden Sie den eingebetteten SpringBoot-Webcontainer

	@Override
	public WebServer getWebServer(ServletContextInitializer... initializers) {
		if (this.disableMBeanRegistry) {
			Registry.disableRegistry();
		}
		Tomcat tomcat = new Tomcat();
		File baseDir = (this.baseDirectory != null) ? this.baseDirectory : createTempDir("tomcat");
		tomcat.setBaseDir(baseDir.getAbsolutePath());
		Connector connector = new Connector(this.protocol);
		connector.setThrowOnFailure(true);
		tomcat.getService().addConnector(connector);
		customizeConnector(connector);
		tomcat.setConnector(connector);
		tomcat.getHost().setAutoDeploy(false);
		configureEngine(tomcat.getEngine());
		for (Connector additionalConnector : this.additionalTomcatConnectors) {
			tomcat.getService().addConnector(additionalConnector);
		}
		prepareContext(tomcat.getHost(), initializers);
		return getTomcatWebServer(tomcat);
	}

Zusammenfassung: Der sogenannte eingebettete Server. Fügen Sie einfach unsere Methode zum manuellen Starten des Servers in das Framework ein.

Anwendung

1. Tomcat-Server ausschließen und Undertow-Abhängigkeit importieren

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>

2. Serverregeln anpassen

Methode 1: Ändern Sie die Konfigurationsdatei unter server

ServerProperties.class

So verwenden Sie den eingebetteten SpringBoot-Webcontainer

Server .undertow.accesslog.dir=/tmp

Method 2: Customize ConfigurableServletWebServerFactory

Method 3: Customize ServletWebServerFactoryCustomizer Customizer

Function: Bind the value of the configuration file to ServletWebServerFactory

SpringBoot design: Customizer Transformer, you can customize XXX Regeln

Das obige ist der detaillierte Inhalt vonSo verwenden Sie den eingebetteten SpringBoot-Webcontainer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen