Spring Boot 配置嵌入式Servlet容器

springboot默认tomcat作为嵌入式的servlet容器

1. 修改和server有关的配置
server.port=8082 #通用的servlet容器设置 server.xxx #Tomcat的设置 server.tomcat.xxx
//org.springframework.boot.autoconfigure.web.ServerProperties@ConfigurationProperties(prefix="server",ignoreUnknownFields=true)publicclassServerProperties{/** * Server HTTP port. */privateInteger port;...privatefinalServlet servlet=newServlet();privatefinalTomcat tomcat=newTomcat();...}
2. 注册一个WebServerFactoryCustomizer bean

如果需要以编程方式配置嵌入的servlet容器,可以注册一个实现WebServerFactoryCustomizer接口的SpringBean。WebServerFactoryCustomizer提供对可配置的ServletWebServerFactory的访问,其中包括许多自定义设置器方法。以下示例以编程方式显示如何设置端口:

@ComponentpublicclassCustomizationBeanimplementsWebServerFactoryCustomizer<ConfigurableServletWebServerFactory>{@Overridepublicvoidcustomize(ConfigurableServletWebServerFactory server){server.setPort(9000);}}

TomcatServletWebServerFactory、JettyServletWebServerFactory和UndertowServletWebServerFactory是可配置的ServletWebServerFactory的专用变体,分别为Tomcat、Jetty和Undertow提供了额外的自定义设置方法。
ctrl+h

切换其他servlet容器:
springboot默认使用tomcat,首先去除tomcat依赖:

再引入其他servlet容器

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId></dependency>

如果前面的自定义技术太有限,您可以自己注册TomcatServletWebServerFactory、JettyServletWebServerFactory或UnderownServletWebServerFactory bean。

@BeanpublicConfigurableServletWebServerFactorywebServerFactory(){TomcatServletWebServerFactory factory=newTomcatServletWebServerFactory();factory.setPort(9000);factory.setSessionTimeout(10,TimeUnit.MINUTES);factory.addErrorPages(newErrorPage(HttpStatus.NOT_FOUND,"/notfound.html"));returnfactory;}

在spring boot中会有很多的xxxCustomizer帮助我们进行定制配置