程序员社区

Spring Boot 修改嵌入式 Servlet 容器配置

       SpringBoot 默认使用的是 内嵌式Tomcat 来作为 Servlet 容器,默认采用打 Jar 包的方式。
使用 Spring Boot 前,项目开发通常都是以打 war 包的方式,将其部署在一个 外置的 Tomcat 容器中,如果需要对 Tomcat 进行相关配置,只需要直接对 conf 目录下的相关文件进行配置即可。
使用 Spring Boot 内嵌式 Tomcat ,该如何配置呢?

Spring Boot 中,修改嵌入式 Servlet 容器的配置,有如下两种方式:

1.全局配置文件中,修改和 server 相关的配置

       这种方式的配置,所有的配置信息都保存在 ServerProperties类中。server 相关哪些属性可以在 yml/properties 文件中配置,请点击链接查看: 官方文档:https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#common-application-properties(官方文档随着 Spring Boot 版本变更,部分配置与本文不同。本文使用 Spring Boot 1.5.x 版本)

//通用的Servlet容器配置
server.port=8088
server.context-path=/demo

//配置tomcat相关容器配置
servlet.tomcat.uri-encoding=UTF-8

哪些属性可以在 yml/properties 文件中配置,其实是有据可依的。这些属性都可以在官方文档中查找到的。

点击查看:请点击我,我是官方文档。

2.编写一个 EmbeddedServletContainerCustomizer类

       EmbeddedServletContainerCustomizer,又称嵌入式 Servlet 容器的定制类,我们也可以通过这种方式来修改 Servlet 容器的配置。切记:在容器启动时,要使用 @Bean 注解的方式,将 Servlet定制类加入到容器中。

@Configuration
public class MyServerConfig {
   
    /** * 配置嵌入式的Servlet容器 */
    @Bean //使用@Bean注解,将该配置添加到Spring容器中
    public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
   

        return new EmbeddedServletContainerCustomizer() {
   
            //定制嵌入式的Servlet容器相关的规则
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
   
                //设置 Server 端口信息
                container.setPort(8088);
                //设置项目访问路径
                container.setContextPath("/demo");
            }
        };
    }
}

总结:

       以上这两种方式的修改,原理都是一致的。ServerProperties 在底层也是通过EmbeddedServletContainerCustomizer这种方式来实现的。优先级:(编写EmbeddedServletContainerCustomizer 类的 > 全局配置文件中的配置)


博主写作不易,来个关注呗

求关注、求点赞,加个关注不迷路 ヾ(◍°∇°◍)ノ゙

博主不能保证写的所有知识点都正确,但是能保证纯手敲,错误也请指出,望轻喷 Thanks♪(・ω・)ノ

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Spring Boot 修改嵌入式 Servlet 容器配置

一个分享Java & Python知识的社区