欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot開發(fā)中的組件和容器詳解

 更新時間:2023年09月01日 10:04:16   作者:韓_師兄  
這篇文章主要介紹了SpringBoot開發(fā)中的組件和容器詳解,SpringBoot 提供了一個內(nèi)嵌的 Tomcat 容器作為默認(rèn)的 Web 容器,同時還支持其他 Web 容器和應(yīng)用服務(wù)器,需要的朋友可以參考下

Web原生組件

Web原生組件包括: Servlet、Filter、Listener等

相關(guān)使用

//  指定原生Servlet組件都放在那里
@ServletComponentScan(basePackages = "com.cf.admin")
// 效果:直接響應(yīng),沒有經(jīng)過Spring的攔截器
@WebServlet(urlPatterns = "/my")
@WebFilter(urlPatterns={"/css/*","/images/*"})
@WebListener

關(guān)于DispatchServlet 如何注冊:

  • 容器中自動配置了 DispatcherServlet 屬性綁定到 WebMvcProperties;對應(yīng)的配置文件配置項(xiàng)是 spring.mvc
  • 通過 ServletRegistrationBean <DispatcherServlet> 把 DispatcherServlet 配置進(jìn)來
  • 默認(rèn)映射的是 / 路徑

Tomcat-Servlet中 多個Servlet都能處理到同一層路徑,精確優(yōu)選原則

  • /my/
  • /my/1

RegistrationBean使用

ServletRegistrationBean , FilterRegistrationBean , and ServletListenerRegistrationBean

@Configuration
public class MyRegistConfig {
    @Bean
    public ServletRegistrationBean myServlet(){
        MyServlet myServlet = new MyServlet();
        return new ServletRegistrationBean(myServlet,"/my","/my02");
    }
    @Bean
    public FilterRegistrationBean myFilter(){
        MyFilter myFilter = new MyFilter();
//        return new FilterRegistrationBean(myFilter,myServlet());
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);
        filterRegistrationBean.setUrlPatterns(Arrays.asList("/my","/css/*"));
        return filterRegistrationBean;
    }
    @Bean
    public ServletListenerRegistrationBean myListener(){
        MySwervletContextListener mySwervletContextListener = new MySwervletContextListener();
        return new ServletListenerRegistrationBean(mySwervletContextListener);
    }
}

Servlet容器

切換Servlet

  • Spring Boot默認(rèn)支持的webServer容器:
  • Tomcat , Jetty , or Undertow ServletWebServerApplicationContext 容器啟動尋找ServletWebServerFactory 并引導(dǎo)創(chuàng)建服務(wù)器

相關(guān)依賴:

<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>

使用原理:

  • SpringBoot應(yīng)用啟動發(fā)現(xiàn)當(dāng)前是Web應(yīng)用。web場景包-導(dǎo)入tomcat
  • web應(yīng)用會創(chuàng)建一個web版的ioc容器 ServletWebServerApplicationContext
  • ServletWebServerApplicationContext 啟動的時候?qū)ふ?ServletWebServerFactory(Servlet 的web服務(wù)器工廠—> Servlet 的web服務(wù)器)
  • SpringBoot底層默認(rèn)有很多的WebServer工廠;TomcatServletWebServerFactory, JettyServletWebServerFactory, or UndertowServletWebServerFactory
  • 底層直接會有一個自動配置類。ServletWebServerFactoryAutoConfiguration
  • ServletWebServerFactoryAutoConfiguration導(dǎo)入了ServletWebServerFactoryConfiguration(配置類)
  • ServletWebServerFactoryConfiguration 配置類 根據(jù)動態(tài)判斷系統(tǒng)中到底導(dǎo)入了那個Web服務(wù)器的包。(默認(rèn)是web-starter導(dǎo)入tomcat包),容器中就有 TomcatServletWebServerFactory
  • TomcatServletWebServerFactory 創(chuàng)建出Tomcat服務(wù)器并啟動;TomcatWebServer 的構(gòu)造器擁有初始化方法initialize---this.tomcat.start();
  • 內(nèi)嵌服務(wù)器,就是手動把啟動服務(wù)器的代碼調(diào)用(tomcat核心jar包存在)

定制Servlet容器

1 實(shí)現(xiàn) WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> 把配置文件的值和ServletWebServerFactory 進(jìn)行綁定

2 修改配置文件servce.xxx, 直接自定義 ConfigurableServletWebServerFactory

import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;
@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
    @Override
    public void customize(ConfigurableServletWebServerFactory server) {
        server.setPort(9000);
    }
}

到此這篇關(guān)于SpringBoot開發(fā)中的組件和容器詳解的文章就介紹到這了,更多相關(guān)SpringBoot組件和容器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot+Vue項(xiàng)目部署上線的實(shí)現(xiàn)示例

    SpringBoot+Vue項(xiàng)目部署上線的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot+Vue項(xiàng)目部署上線的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • JVM之參數(shù)分配(全面講解)

    JVM之參數(shù)分配(全面講解)

    下面小編就為大家?guī)硪黄狫VM之參數(shù)分配(全面講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java的單例設(shè)計(jì)模式詳解

    Java的單例設(shè)計(jì)模式詳解

    今天小編就為大家分享一篇關(guān)于Java的單例設(shè)計(jì)模式詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • 如何解決SpringBoot定時任務(wù)報(bào)錯Unexpected error occurred in scheduled task問題

    如何解決SpringBoot定時任務(wù)報(bào)錯Unexpected error occurred 

    這篇文章主要介紹了如何解決SpringBoot定時任務(wù)報(bào)錯Unexpected error occurred in scheduled task問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 解決RabbitMq消息隊(duì)列Qos?Prefetch消息堵塞問題

    解決RabbitMq消息隊(duì)列Qos?Prefetch消息堵塞問題

    這篇文章主要為大家介紹了關(guān)于如何解決解決RabbitMq?Qos?Prefetch消息堵塞的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-01-01
  • Windows7下的Java運(yùn)行環(huán)境搭建過程圖解

    Windows7下的Java運(yùn)行環(huán)境搭建過程圖解

    這篇文章主要介紹了Windows7下的Java運(yùn)行環(huán)境搭建過程圖解,需要的朋友可以參考下
    2014-04-04
  • 一篇文章教帶你了解Java Spring之自動裝配

    一篇文章教帶你了解Java Spring之自動裝配

    今天小編就為大家分享一篇關(guān)于Spring中的自動裝配,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-09-09
  • java同一個類中,一個無事務(wù)方法調(diào)用一個有事務(wù)方法時,事務(wù)失效問題

    java同一個類中,一個無事務(wù)方法調(diào)用一個有事務(wù)方法時,事務(wù)失效問題

    本文詳細(xì)介紹了Spring框架中事務(wù)管理的實(shí)現(xiàn)原理,包括@Transactional注解的使用、事務(wù)的開啟、提交和回滾機(jī)制,以及代理對象的兩種實(shí)現(xiàn)方式(JDK動態(tài)代理和CGLIB代理),文章還探討了在同一個類中調(diào)用有事務(wù)方法時事務(wù)失效的原因,并提供了解決方法
    2024-12-12
  • JAVA實(shí)現(xiàn)通用日志記錄方法

    JAVA實(shí)現(xiàn)通用日志記錄方法

    本篇文章主要介紹了JAVA實(shí)現(xiàn)通用日志記錄方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java中轉(zhuǎn)換器設(shè)計(jì)模式深入講解

    Java中轉(zhuǎn)換器設(shè)計(jì)模式深入講解

    這篇文章主要給大家介紹了關(guān)于Java中轉(zhuǎn)換器設(shè)計(jì)模式的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論