开发者学堂课程【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。
通过分析相关依赖树也能发现默认使用自带的嵌入式 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 默认配置补充的一点