SpringBoot的嵌入式Servlet容器自动配置原理1

本文深入探讨SpringBoot如何定制和修改Servlet容器配置,包括ServerProperties和EmbeddedServletContainerCustomizer的使用。同时,详细介绍了如何注册Servlet、Filter和Listener,通过ServletRegistrationBean、FilterRegistrationBean和ServletListenerRegistrationBean实现组件注册。文章还提供了DispatcherServlet自动注册的示例,并讨论了使用其他Servlet容器如Jetty和Undertow的可能性。
摘要由CSDN通过智能技术生成

目录

 

前言

一、如何定制和修改Servlet容器的相关配置

二、注册Servlet三大组件【Servlet、Filter、Listener】

1、先来看ServletRegistrationBean

2、接下来是FilterRegistrationBean

3、最后一个是ServletListenerRegistrationBean

三、举例

四、知识扩充


前言

我们知道SpringBoot默认使用Tomcat作为嵌入式的Servlet容器

我们可以从pom文件中右键查看依赖图:

既然是嵌入式的容器了,于是不禁思考:我们该如何定制和修改Servlet容器的相关参数呢?

一、如何定制和修改Servlet容器的相关配置

1、修改和server有关的配置(ServerProperties【也是EmbeddedServletContainerCustomizer】)例如:

server.port=8081

server.context-path=/crud

 

我们进入到ServerProperties类中,它来绑定和服务器相关的配置,可以看到还能配置tomcat:

于是我们可以大致总结:通用的Servlet容器设置为server.xxx,那么Tomcat的设置则为server.tomcat.xxx

 

查看tomcat:

2、编写一个EmbeddedServletContainerCustomizer:嵌入式的Servlet容器的定制器。它也可以用来修改Servlet容器的配置。

2.x版源码中的类已经没有EmbeddedServletContainerCustomizer:

1.x版本是WebServerFactoryCustomizer类,这个类是个接口:

需要注意的是,在此处是规定了一个泛型,否则不能设置服务器属性,对比如下图,下方的方法才是正确的。另外我们需要注意,要想让这个方法起作用,就需要在方法头部加上@Bean,这样springboot才知道它的存在

编写完成后我们启动项目看看,发现端口号的确是配置后的8081:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值