嵌入式 servlet 容器
在 spring boot 之前的 web 开发,我们都是把我们的应用部署到 Tomcat 等 servelt 容器,这些容器一般都会在我们的应用服务器上安装好环境,但是 spring boot 中并不需要外部应用服务器安装这些 servlet 容器,spring boot 自带了嵌入式的 servlet 容器。
如何修改和定制嵌入式 servlet 容器
在 application.yaml 文件中配置修改
#修改服务端口号
server.port=8081
#配置统一请求路径
server.context‐path=/crud
# 配置 tomcat 相关
server.tomcat.uri‐encoding=UTF‐8
这些配置相关的属性都定义在 org.springframework.boot.autoconfigure.web.ServerProperties 类中
编写一个嵌入式的 servlet 容器的定制器来修改相关的配置
@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
@Override
public void customize(ConfigurableServletWebServerFactory server) {
server.setPort(9000);
}
}
直接定制具体的 servlet 容器配置,比如 tomcat 容器
@Configuration
public class ApplicationConfig implements WebMvcConfigurer {
@Bean
public ConfigurableServletWebServerFactory configurableServletWebServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.setPort(8585);
return factory;
}
}
注册 Servlet, Filter, 和 Listener
spring boot 默认是以 jar 包的方式启动嵌入式的 servlet 容器来启动 web 应用,应用中并没有 web.xml 文件,我们注册 Servlet, Filter, 和 Listener 三大组件可以使用以下方式