最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot嵌入式Web容器原理與使用介紹

 更新時間:2022年10月20日 15:28:02   作者:劉婉晴  
Web開發(fā)的核心內容主要包括內嵌的Servlet容器和SpringMVCSpringBoot使用起來非常簡潔,大部分配置都有SpringBoot自動裝配,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

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

原理

  • SpringBoot 項目啟動,發(fā)現(xiàn)是 web 應用,引入 web 場景包 ----- 如:Tomcat
  • web 應用創(chuàng)建一個 web 版的 IOC 容器 ServletWebServerApplicationContext
  • ServletWebServerApplicationContext 啟動的時候尋找 ServletWebServerFactory (Servlet 的 web 服務器工廠,用于生產 Servlet 服務器)
  • ServletWebServerFactory 底層默認有很多 Web 服務器工廠

  • 底層會自動配置好 ,自動配置類 ServletWebServerFactoryAutoConfiguration
  • ServletWebServerFactoryAutoConfiguration 導入 ServletWebServerFactoryConfiguration 工廠配置類

ServletWebServerFactoryConfiguration.class

  • 動態(tài)判斷系統(tǒng)中導入了那個web服務器配置包
  • 如果導入 Tomcat 依賴,會自動放一個 Tomcat 服務器工廠, TomcatServletWebServerFactory 為我們創(chuàng)建出 Tomcat 服務器工廠
  • Tomcat 底層支持如下服務器

	@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. 定制服務器規(guī)則

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

ServerProperties.class

server.undertow.accesslog.dir=/tmp

方法二: 自定義 ConfigurableServletWebServerFactory

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

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

SpringBoot 設計: Customizer 定制化器,可以定制 XXX 規(guī)則

到此這篇關于SpringBoot嵌入式Web容器原理與使用介紹的文章就介紹到這了,更多相關SpringBoot嵌入式Web容器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • springboot自定義攔截器簡單使用及舉例

    springboot自定義攔截器簡單使用及舉例

    Spring Boot攔截器是AOP的一種實現(xiàn),專門攔截對控制層的請求,主要應用于判斷用戶權限,攔截webSocket請求,下面這篇文章主要給大家介紹了關于springboot自定義攔截器簡單使用及舉例的相關資料,需要的朋友可以參考下
    2023-01-01
  • 解決@Transactional注解事務不回滾不起作用的問題

    解決@Transactional注解事務不回滾不起作用的問題

    這篇文章主要介紹了解決@Transactional注解事務不回滾不起作用的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java中一個線程執(zhí)行死循環(huán)有什么后果

    Java中一個線程執(zhí)行死循環(huán)有什么后果

    這篇文章主要為大家詳細介紹了Java中一個線程執(zhí)行死循環(huán)有什么后果,當一個線程在執(zhí)行死循環(huán)時會影響另外一個線程嗎,下面為大家揭曉
    2016-05-05
  • Spring+Mybatis動態(tài)切換數(shù)據(jù)源的方法

    Spring+Mybatis動態(tài)切換數(shù)據(jù)源的方法

    這篇文章主要為大家詳細介紹了Spring+Mybatis動態(tài)切換數(shù)據(jù)源的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • maven 打包項目的幾種方式

    maven 打包項目的幾種方式

    maven目前在web上面的使用方式很普遍,而打包的方式也存在很多方式,本文就詳細的介紹了三種方式,具有一定的參考價值,感興趣的可以了解下
    2021-06-06
  • 詳解SpringCloud-OpenFeign組件的使用

    詳解SpringCloud-OpenFeign組件的使用

    這篇文章主要介紹了SpringCloud-OpenFeign組件的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • JVM原理之完整的一次GC流程解讀

    JVM原理之完整的一次GC流程解讀

    這篇文章主要介紹了JVM原理之完整的一次GC流程解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Spring實戰(zhàn)之搜索Bean類操作示例

    Spring實戰(zhàn)之搜索Bean類操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之搜索Bean類操作,結合實例形式分析了Spring搜索Bean類的相關配置、接口實現(xiàn)與操作技巧,需要的朋友可以參考下
    2019-12-12
  • java 中JDBC連接數(shù)據(jù)庫代碼和步驟詳解及實例代碼

    java 中JDBC連接數(shù)據(jù)庫代碼和步驟詳解及實例代碼

    這篇文章主要介紹了java 中JDBC連接數(shù)據(jù)庫代碼和步驟詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-02-02
  • Java/Spring項目的包開頭為什么是com詳解

    Java/Spring項目的包開頭為什么是com詳解

    這篇文章主要介紹了Java/Spring項目的包開頭為什么是com的相關資料,在Java中包命名遵循域名反轉規(guī)則,即使用公司的域名反轉作為包的前綴,以確保其全球唯一性和避免命名沖突,這種規(guī)則有助于邏輯分層、代碼可讀性提升和標識代碼來源,需要的朋友可以參考下
    2024-10-10

最新評論

比如县| 来安县| 曲水县| 龙岩市| 关岭| 德格县| 肇庆市| 乌拉特中旗| 盐边县| 岑溪市| 武川县| 牙克石市| 陕西省| 凤翔县| 关岭| 威信县| 东城区| 鄂伦春自治旗| 霍城县| 拉萨市| 建昌县| 莲花县| 玛多县| 富宁县| 融水| 麻栗坡县| 建平县| 邹平县| 新绛县| 任丘市| 长宁县| 乌鲁木齐市| 克什克腾旗| 朝阳市| 吴堡县| 图们市| 平利县| 湾仔区| 固始县| 雅安市| 崇左市|