栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring boot 原生组件、定制化组件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring boot 原生组件、定制化组件

一、原生组件的支持 Servlet、Filter、Listener

1、使用Servlet API

  • 指定 @ServletComponentScan 制定需要扫描的Servlet包
  • 使用@WebServlet注解, 没有经过Spring拦截器
  • 使用@WebFilter、@WebListener 注册其他两个组件

2、也可以使用注册Bean

  • 使用proxyBeanMethod = true,这样能保证在容器中组件始终格式单实例的
  • DispatchServlet 注册流程
    • 给容器注册 public DispatcherServlet dispatcherServlet(WebMvcProperties webMvcProperties)
    • 通过  DispatcherServletRegistrationBean 把 DispatcherServlet 注册到容器中
    • 默认映射的就是 / 路径 
  • 因为Servlet处理原则就是精确有限原则,所以原生Servlet优先于DispatcherServlet
二、嵌入式Servlet容器

应用中自带容器,也就是内嵌的Tomcat。

原理:

  • spring boot 启动的时候,发现现在是web应用,web场景导入tomcat
  • web应用会创建一个web容器,ServletWebServerApplicationContext
  • ServletWebServerApplicationContext 会在启动的时候,寻找ServletWebServerFactory
  • Spring boot 默认有很多默认工厂 tomcat、jetty、UnderTow等,使用默认配置类ServletWebServerFactoryAutoConfiguration
  • 所以spring boot 启动的时候,根据动态判断,系统中导入哪个web服务器的包,就会添加哪个容器

切换web容器,在web中移除tomcat,导入期望导入的starter:

 可以修改配置文件,来达到配置容器相关属性的目的,自动配置类如下:

属性的绑定:(spring boot 中xxxCustomizer就是定制化器,可以修改默认配置)

三、定制化原理

1、原理分析

导入场景starter - xxxAutoConfiguration - 导入xxx组件 - 绑定xxxProperties

- 绑定配置文件项,所以修改配置文件即可。

2、定制化常见方式

  • @Bean替换容器中的默认组件、试图解析器,编写自定义配置类,xxxConfiguration
  • 修改配置文件
  • xxxCustomizer
  • web应用,实现WebMvcConfigurer,即定制化web功能
    • 使用@EnableWebMvc,部分的mvc的默认配置都不能使用,需要注意

原理:

  • @EnableWebMvc会导入@import(DelegatingWebMvcConfiguration.class)
  • DelegatingWebMvcConfiguration 继承了 WebMvcConfigurationSupport
  • 而WebMvcAutoConfiguration在加载的时候,会判断系统中是否存在WebMvcConfigurationSupport
  • 所以当使用者自己在容器中使用@EnableWebMvc的时候,就会导致自动配置失效

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/340938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号