嵌入式Servlet容器

切换嵌入式Servlet

1. 切换嵌入式Servlet
1. 默认支持的WebServer
1. Tomcat、Jetty、Undertow
2. ServletWebServerApplicationContext 容器启动寻找ServletWebServerFactory 并引导 创建服务器
3. 切换服务器
在这里插入图片描述
在这里插入图片描述
原理
1. Springboot应用启动发现当前是Web应用,Web场景包-导入tomcat
2. Web应用会创建一个web版的ioc容器 ServletWebServerApplicationContext
3. ServletWebServerApplicationContext 启动的时候寻找ServletWebServerFactory(Servlert 的Web服务器工厂 --> Servlet的web服务器)
4. Springboot底层默认有很多的WebServer工厂:
1. TomcatServletWebServerFactory,JettyServletWebServerFactory、UndertowServletWebServerFactory
2. 底层直接会有一个自动配置类。ServletWebServerFactoryAutoConfiguraion
3. ServletWebServerFactoryAutoConfiguraion导入了ServletWebServerFactoryConfiguration(配置类)
4. ServletWebServerFactoryConfiguration配置类,根据动态判断系统中到底导入了哪个wen服务器的包,(默认是导入web-starter导入tomcat包),容器中就有TomcatServletWebServerFactory
5. TomcatServletWebServerFactory 创建出Tomcat服务器并启动;TomcatWebServer的构造器拥有初始化方法initialize—this.tomcat.start();
6. 内嵌服务器,就是手动把启动服务器的代码调用(tomcat核心jar包存在)

2. 定制Servlet容器

  1. 实现WebServerFactoryCustomizer
    1. 把配置文件的值和ServletWebServerFactory进行绑定
  2. 修改配置文件server.xxx
  3. 直接自定义ConfigurableServletWebServerFactory

xxxCustomizer:定制化器,可以改变xxx的默认规则

定制化原理

1. 定制化的常见方式

  1. 修改配置文件
  2. xxxCustomizer
  3. 编写自定义的配置类 xxxConfiguration + @Bean替换、增加容器中默认组件;视图解析器
  4. Web应用 编写了一个配置类实现 WebMvcConfigurer即可定制化web功能; + @Bean给容器中再扩展一些组件
@Configuration
Public class AdminMvcConfig implements WebMvcConfigurer
  1. @EnableWebMvc + WebMvcConfigurer-------@Bean 可以全面接管SpringMVC,所有规则全部自己重新配置;实现定制和扩展功能
    2. 原理
    1. WebMvcAutoConfiguration默认的SpringMVC的自动配置功能类,静态资源、欢迎页
    2. 一旦使用@EnableWebMvc、会@Import(DelegatingWebMvcConfiguration.class)
    3. DelegatingWebMvcConfiguration的作用,只保证SpringMVC最基本的使用
      1. 把所有系统中的WebMvcConfigurer拿过来,所有功能的定制都是这些WebMvcConfigurer 合起来一起生效
      2. 自动配置了一些非常底层的组件。RequestMappingHandlerMapping、这些组件依赖的组件都是从容器中获取
      3. Public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport
    4. WebMvcAutoConfiguration里面的配置要能生效 必须
      @ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
    5. @EnableWebMvc 导致了 WebMvcAutoConfiguration 没有生效

3. 原理分析套路
场景starter - xxxAutoConfiguration - 导入xxx组件 - 绑定xxxProperties - 绑定配置文件项

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值