91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot嵌入式Web容器如何使用

發布時間:2023-01-12 10:26:00 來源:億速云 閱讀:129 作者:iii 欄目:開發技術

這篇“SpringBoot嵌入式Web容器如何使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“SpringBoot嵌入式Web容器如何使用”文章吧。

嵌入式 Web 容器:應用中內置服務器(Tomcat),不用在外部配置服務器了

原理

  • SpringBoot 項目啟動,發現是 web 應用,引入 web 場景包 ----- 如:Tomcat

  • web 應用創建一個 web 版的 IOC 容器 ServletWebServerApplicationContext

  • ServletWebServerApplicationContext 啟動的時候尋找 ServletWebServerFactory (Servlet 的 web 服務器工廠,用于生產 Servlet 服務器)

  • ServletWebServerFactory 底層默認有很多 Web 服務器工廠

SpringBoot嵌入式Web容器如何使用

  • 底層會自動配置好 ,自動配置類 ServletWebServerFactoryAutoConfiguration

  • ServletWebServerFactoryAutoConfiguration 導入 ServletWebServerFactoryConfiguration 工廠配置類

ServletWebServerFactoryConfiguration.class

SpringBoot嵌入式Web容器如何使用

  • 動態判斷系統中導入了那個web服務器配置包

  • 如果導入 Tomcat 依賴,會自動放一個 Tomcat 服務器工廠, TomcatServletWebServerFactory 為我們創建出 Tomcat 服務器工廠

  • Tomcat 底層支持如下服務器

SpringBoot嵌入式Web容器如何使用

	@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);
	}

總結: 所謂內嵌服務器,就是把我們手動啟動服務器的方法放進框架中了。

應用

1. 切換Web服務器

排除 tomcat 服務器,導入 undertow 依賴

       <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. 定制服務器規則

方法一: 修改 server 下的配置文件

ServerProperties.class

SpringBoot嵌入式Web容器如何使用

server.undertow.accesslog.dir=/tmp

方法二: 自定義 ConfigurableServletWebServerFactory

方法三: 自定義 ServletWebServerFactoryCustomizer 定制化器

作用: 將配置文件的值,與 ServletWebServerFactory 綁定

SpringBoot 設計: Customizer 定制化器,可以定制 XXX 規則

以上就是關于“SpringBoot嵌入式Web容器如何使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仲巴县| 阳朔县| 无棣县| 图片| 丰宁| 马公市| 麟游县| 宜州市| 安仁县| 沛县| 永安市| 尚义县| 彝良县| 丽水市| 桓仁| 土默特右旗| 兴山县| 石景山区| 安乡县| 大理市| 安平县| 商都县| 寻乌县| 章丘市| 颍上县| 临清市| 龙井市| 拜城县| 若羌县| 西安市| 新龙县| 邓州市| 肃宁县| 西畴县| 竹山县| 松江区| 策勒县| 益阳市| 新巴尔虎左旗| 翼城县| 渝北区|