一、配置嵌入式Servlet容器

SpringBoot默认使用Tomcat作为嵌入式的Servlet容器

(一)配置文件修改Servlet属性

如何定制和修改Servlet容器的相关配置
org.springframework.boot.autoconfigure.web.ServerProperties
相关的配置都可以通过上面这个类进行设置,比如开发中常使用的server.port

public class ServerProperties {
    private Integer port;
    private InetAddress address;
	private Duration connectionTimeout;
private String contextPath;
}

上面简单的列举了几个属性,包括端口、地址、超时时间、项目路径等等,具体的参考类完整属性.
其中在该类中包含了几个容器的属性,

    private final ServerProperties.Servlet servlet = new ServerProperties.Servlet();
    private final ServerProperties.Tomcat tomcat = new ServerProperties.Tomcat();
    private final ServerProperties.Jetty jetty = new ServerProperties.Jetty();
    private final ServerProperties.Undertow undertow = new ServerProperties.Undertow();

每个属性在该ServerProperties对应的有静态的内部类代码,如果想了解每个容器的默认配置可以去该类中细读

上面给出的属性是通用的servlet相关属性,如果想要设置某个容器的属性可以参考如下设置:
比如说修改tomcat中的某一个属性,可以在配置文件中按照这样的配置
server.tomcat.XXX (具体的属性名参考
org.springframework.boot.autoconfigure.web.ServerProperties.Tomcat
在这里插入图片描述

(二)非配置文件修改Servlet属性

上面我们是通过配置文件的方式来修改某些默认的配置,除了该种方式外,我们还可以自定义Bean来修改默认属性,即编写一个嵌入式servlet容器的定制器

在SpringBoot 1.X版本使用的是下面的这个类
org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer
SprigBoot2.X版本没有这个类了,使用的2.X版本,请参考如下:

@Configuration
public class MyServlet {
    @Bean
    public WebServerFactoryCustomizer myWebServerFactoryCustomizer() {
        return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
            @Override
            public void customize(ConfigurableWebServerFactory factory) {
                factory.setPort(8081);
            }
        };
    }
}

上述代码使用的是WebServerFactoryCustomizer类,通过实现该接口返回一个实例对象这就是我们自定义的Servlet配置
其中参数ConfigurableWebServerFactory 是可以更换的,默认是WebServerFactory,这里选择它的一个子类来扩展功能,因为WebServerFactory是一个空接口.该父接口下有很多不同类型的接口配置,具体选择自行判断.

上述配置完成后,该Bean在启动时就会加载到单例池中,通过启动日志可以看到确实修改了默认的端口
在这里插入图片描述

原创文章 105 获赞 33 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Octopus21/article/details/104840554