嵌入式 Servlet 容器配置修改|学习笔记

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 快速学习嵌入式 Servlet 容器配置修改

开发者学堂课程【SpringBoot快速掌握 - 核心技术嵌入式 Servlet 容器配置修改】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/612/detail/9258


嵌入式 Servlet 容器配置修改

一、介绍配置嵌入式 Servlet 容器

1、嵌入式 Servlet 容器的概念:

(1) 首先应该明确一点,写一个 wed 应用,写完之后需要打成一个 war 包,外部配好 Tomcat 环境(Tomcat 就是一个 Servlet 容器),将 war 包挂载到 Tomcat,接下来在外部启动 Tomcat 即可。

(2) springBoot 无需外部使用环境可以直接启动使用,而 Tomcat 在也8080端口启动,用的是自带的嵌入式 Servlet 容器。

(3) springBoot 默认是用的嵌入的 Servlet 容器(Tomcat),然后分析 pom.xml 的相关依赖关系,右键点击生成依赖图。

(4) 发现做 wed 应用引入了,spring-boot-start-wed。而在wed里面又引入了spring-boot-start-tomcat的相关功能。通过观察Tomcat依赖树,也能发现是用的自带的嵌入式Tomcat。

(5) spring-boot-start-tomcat默认的版本号是8.5.27。

image.png

通过分析相关依赖树也能发现默认使用自带的嵌入式 Tomcat。

2、如果是嵌入式的 Servlet 容器需要注意的是,注意几个问题:

(1)如何定制和修改 Servlet 容器的相关配置;

//针对于第一个问题,想要修改 Tomcat 的端口号或者项目的访问路径,可以这么做:

①、修改和servlet有关的配置(Serverproperties【也是EmbeddedServlertContainerCustomizer 】)//而与 Servlet 有关的配置肯定是和一个类绑定的。改 Serverproperties 都是对服务器进行一些设置。

如果使用外置的 Servlet 容器,外边装了一个 Tomcat,想对 Tomcat 做的一些定制优化设置,就可以来到 application.prperties 只需要改 server.port 相关属性即可。在外置的情况下是有配置文件的,而嵌入式的 Tomcat 该如何去修改呢?Servlet 容器有很多,Tomcat是一种 Servlet 容器,那能不能切换 Spring Boot 支持其他 Servlet 容器。

例如:

server.port =8081

server.context-path=/crud

//通用的Servlet容器设置

server.xxx

/Tomcat的设置//Tomcat设置有这个专门的属性对象。

server.tomcat.xxx

//Tomcat相关设置有协议头、目录结构、编码格式、最大链接数等等。

//修改完之后 Tomca 就会从8081启动了。

springBoot 中的 Serverproperties 绑定了 server. 的相关配置,有端口号、访问路径和有关 session 的相关配置、超时时间等。

如果是外置的 Servlet 容器,如果这时需要对 Tomcat 进行相关配置优化可以到Tomcat 目录找到相关配置文件,如 server.xml 或 wed.xml 等等。

②、编写一个 E mbeddedServlertContainerCustomizer:嵌入式的 Servlet 容器的定器;可通过这种模式来修改 Servlet 容器的相关配置。例:

MyMvcConfig.java 里编写一个加一个组件:

@Bean//要让 container.setPort(8083)起作用必须把他加入到容器中,这样Spring Boot 才能知道配置的存在

public interface EmbeddedServlertContainerCustomizer embeddedServlertContainerCustomizer(){//interface是一个接口,而接口里面只有一个方法。

return new EmbeddedServlertContainerCustomizer (){ 

//通过customize定制嵌入式的Servlet容器相关的规则

@Override

public void customize(configurableEbedddedServletContainer container){

//那么直接new一个customize来实现方法就可以了。container就是一个嵌入式的Servlet容器。

container.setPort(8083)

}

}

}

//引入类

(2)springBoot 能不能支持其他的 Servlet 容器;

Servlet 容器有很多,Tomcat 是一种 Servlet 容器。修改只需要修改 server. 配置就可以了。

//修改 Servlet 有关配置上面两种方式都可以使用,要么用编码的方式,要么用配置文件的方式。两种方式虽然表面上看上去不同,一个修改配置文件,一个是写代码,当然在底层是同一个原理的。来看一下 ServerProperties 其实它也是EmbeddedServlertContainerCustomizer ,也是利用 customize 方法,把配置属性放在嵌入式的 Servlet 容器中。

(3)在 SpringBoot 中会有很多的 xxxCustomizer 帮助我们进行定制配置。

//如何修改 SpringBoot 默认配置补充的一点

相关文章
|
2月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
78 0
|
4月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Group Box的使用及说明
306 3
|
4月前
|
容器
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
【Qt 学习笔记】Qt常用控件 | 容器类控件 | Tab Widget的使用及说明
171 2
|
6月前
|
XML 数据格式
XML配置Servlet文件,不使用注解配置路径的方法
XML配置Servlet文件,不使用注解配置路径的方法
|
5月前
|
前端开发 Java 应用服务中间件
Spring Boot 2.x 嵌入式 Servlet 容器
Spring Boot使用内嵌Tomcat,默认端口8080,可通过`application.properties`配置端口、上下文路径等。配置方式有两种:1) 直接在配置文件中添加`server.port`和`server.servlet.context-path`;2) 创建`WebServerFactoryCustomizer` Bean来自定义配置,如设置端口`factory.setPort(8083)`,这种方式优先级更高。
|
5月前
|
XML Java 应用服务中间件
springboot定制嵌入式的servlet
SpringBoot允许定制嵌入式Servlet容器,如修改配置或更换默认的Tomcat。配置可通过`application.properties`设置`server.port`和`server.tomcat.*`属性。此外,可创建`EmbeddedServletContainerCustomizer` Bean来自定义容器,例如改变端口。要替换默认的Tomcat,需排除`spring-boot-starter-tomcat`依赖,并引入`spring-boot-starter-jetty`。
|
6月前
|
应用服务中间件
Servlet urlPattern配置,和不要在Servlet中配置任何匹配的原因
Servlet urlPattern配置,和不要在Servlet中配置任何匹配的原因
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
序-Servlet和SpringMVC的联系和区别-配置路径先想好使用的使用的方法,然后匹配的需要的技术
|
6月前
|
Java 应用服务中间件 容器
手写SpringBoot(二)之动态切换Servlet容器
我们在切换serlvet容器的时候,会将SpringBoot默认的tomcat jar包给排除掉,换上我们需要的jar包,比如jetty。
44 0
|
7月前
|
Prometheus 监控 Cloud Native
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus
Ubantu docker学习笔记(九)容器监控 自带的监控+sysdig+scope+cAdvisor+prometheus