当前位置: 首页 > news >正文

SpringBoot-Web开发之嵌入式容器

切换嵌入式Servlet容器

1. 默认支持的web服务器

  • Tomcat
  • Jetty
  • Undertow

2. 切换服务器

  • 排除默认tomcat
<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>

Servlet容器配置原理

1. SpringBoot应用启动时,发现当前是Web应用

  • spring-boot-starter-web默认导入了tomcat

2. web应用会创建一个web版的ioc容器

  • 启动的时候,ServletWebServerApplicationContext 寻找 ServletWebServerFactory
  • 也就是Servlet 的web服务器工厂 找 Servlet 的web服务器

3. web服务器的自动配置类ServletWebServerFactoryAutoConfiguration

  • 导入了ServletWebServerFactoryConfiguration(配置类)

4. ServletWebServerFactoryConfiguration配置类

  • 动态判断系统中到底导入了那个Web服务器的包
  • web-starter默认是导入tomcat包,容器中就有 TomcatServletWebServerFactory

5. 获取到唯一确定的服务器factory,调用getWebServer()

  • 创建出Tomcat服务器
  • TomcatWebServer 的构造器进行初始化initialize()
  • 手动调用this.tomcat.start(),启动服务器

修改Servlet容器

1. 配置文件中修改默认配置

  • server.xxx
  • 配置文件的值和ServletWebServerFactory是绑定的

2. 自定义 ConfigurableServletWebServerFactory

  • 一般直接使用配置文件配置即可
@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {@Overridepublic void customize(ConfigurableServletWebServerFactory server) {server.setPort(9000);}}

 定制化的常见方式

1. 修改配置文件

2. xxxxxCustomizer

3. 编写自定义的配置类 xxxConfiguration

4. Web应用编写一个配置类实现 WebMvcConfigurer

  • 如果配置类加@EnableWebMvc,全面接管SpringMVC,所有规则都需要自己重新配置
  • 慎用注解@EnableWebMvc
/*** @EnableWebMvc:全面接管*      1、静态资源?视图解析器?欢迎页.....全部失效*/
@EnableWebMvc
@Configuration
public class AdminWebConfig implements WebMvcConfigurer{/*** 定义静态资源行为* @param registry*/@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {/*** 访问  /aa/** 所有请求都去 classpath:/static/ 下面进行匹配*/registry.addResourceHandler("/aa/**").addResourceLocations("classpath:/static/");}
}

@EnableWebMvc原理

  • 一旦使用 @EnableWebMvc 、会 @Import(DelegatingWebMvcConfiguration.class)

  • DelegatingWebMvcConfiguration 的作用,只保证SpringMVC最基本的使用,然后搭配系统中所有的 WebMvcConfigurer

  • WebMvcAutoConfiguration因此失效

http://www.dtcms.com/a/521483.html

相关文章:

  • 网站整站建设廊坊企业网站服务
  • 做门户网站的公司有哪些论坛做视频网站有哪些
  • OBS弹幕助手下载,OBS弹幕助手安装使用教程,OBS语音读弹幕,OBS语音助手下载地址
  • 百度网站推广外包织梦的网站收录不好
  • 欢迎访问中国建设银行网站个人客户鹤壁专业做网站多少钱
  • wordpress 添加图片水印seo网络优化是做什么的
  • Spring Boot Actuator:打造高效监控系统
  • 凡客衬衫官方网站东莞五金网站建设
  • 怎么找网站建设宁夏交通厅建设局网站
  • 使用 n8n 构建自动化科技新闻速览工作流:从 RSS 到 AI 摘要生成与文件存储
  • mysy配置C++
  • 做html网站模板咸阳市城市建设管理局网站
  • 做英文网站有哪些网站建设必须买主机吗
  • 深圳做小程序网站开发服装设计效果图
  • 公司网站首页图片素材台州网站建设公司
  • 项目——基于C/S架构的预约系统平台 (1)
  • 机器学习预测波动率辅助ETF动态止损边界设定
  • 搭建网站一条龙柳江网站开发
  • 网站建设木马科技做美妆网站的关键词
  • 区块链的专业名字从基础到应用​​,从​​技术到生态
  • php个人网站源码带音乐如何去国外网站看内容
  • 关于我们 About Techub News
  • 大腾智能PDM在华为云生态中的应用实践——旭派锂能研发管理数字化转型
  • 椭圆曲线密码学的效率核心:单标量与多标量乘法详解
  • 期货看盘和下单简要说明
  • c2c网站系统芜湖哪家公司做网站不错
  • 网站做cdn怎么弄如何去掉wordpress作者链接
  • 每日开源项目1——HyperLogLog库
  • Dify、FastGPT、BuildingAI 与 RAGFlow 深度体验记录
  • ESP32S3入门之环境搭建