SpringBoot 服务容器的相关配置,及实现servelt/filter/listener的方式

156 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

一、springboot的容器

我们知道springboot运行时不需要再放入容器中的,打成jar 包通过java -jar xxx.jar就可以成功运行,而在springboot之前,我们都是使用一些容器。如:tomcat/jetty/jboss等。可以看下官网对springboot的servlet的介绍

image.png

由此可以看到,springboot帮我们内置了tomcat/jetty/undertow容器,并且端口默认8080

刚刚创建好的springboot项目,可以看到默认的使用tomcat容器

image.png

可以看下我这边使用springboot2.7.0的版本,其中tomcat版本为9.0版本

image.png

二、嵌入式servlet容器配置修改

2-1、通过全局配置文件修改

在之前文章中也有介绍到,修改端口的方式,在application.properties中添加server.prot=8080即可完成对tomcat端口号的修改。

可以在官网中看到其中的介绍,可以针对不同的服务,进行分别配置。

image.png

通过以上我们就可以知道:
可以通过server.xxx 来进行web服务配置, 没有带服务器名称的则是通用配置
通过带了具体的服务器名称则是单独对该服务器进行设置,比如 server.tomcat.xxx 就是专门针对tomcat的配置;server.jetty.xxx就是针对jetty的配置。

比如我们想调一下tomcat的线程相关信息:

image.png

2-2、通过WebServerFactoryCustomizer的Bean修改

在官网介绍中,可以看到通过实现WebServerFactoryCustomizer也可以进行配置

image.png

如下我这边自己创建了一个Bean,然后设置了端口,启动之后,输出如下:
可以得知,配置文件和配置Bean是可以互补的,如果一个配置同时存在则以配置Bean中的为准。 image.png

三、servlet的三大组件

servlet中的三大组件为:servlet、listener、filter
在springmvc中有web.xml可以进相关配置,那没有web.xml该如何配置呢,在servlet3.0版本后提供了使用注解的方式进行注册注解分别为:
@WebServlet
@WebListener
@WebFilter

3-1、servlet3.0注解方式实现

3-1-1、创建servlet

首先创建一个servlet,通过@WebServlet注解设置name及url,并且继承HttpServlet父类。因此仅做演示,因此旧从写doGet方法,并输出一些信息。

image.png

3-1-2、告诉容器去扫描三大组件

在启动类中添加@ServletComponentScan注解,这样就可以扫描系统中添加了@WebServlet@WebListener@WebFilter三个注解了。

image.png

3-1-3、测试

image.png

3-2、springboot中三大组件的使用

在springboot中可以使用ServletRegistrationBean,FilterRegistrationBean以及ServletListenerRegistrationBean进行三个组件的注册。可以看下官网介绍

image.png

3-2-1、创建一个类实现HttpServlet

这个类不需要添加任何注解,实现HttpServlet,并重写需要的方法即可 image.png

3-2-2、创建自动配置类

创建一个自己的自动配置类,然后创ServletRegistrationBean

image.png

3-2-3、测试

image.png