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)
public class ServerProperties {
/**
* Server HTTP port.
*/
private Integer port;
...
private final Servlet servlet = new Servlet();
private final Tomcat tomcat = new Tomcat();
...
}
2. 注册一个WebServerFactoryCustomizer bean
如果需要以编程方式配置嵌入的servlet容器,可以注册一个实现WebServerFactoryCustomizer接口的SpringBean。WebServerFactoryCustomizer提供对可配置的ServletWebServerFactory的访问,其中包括许多自定义设置器方法。以下示例以编程方式显示如何设置端口:
@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
@Override
public void customize(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。
@Bean
public ConfigurableServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.setPort(9000);
factory.setSessionTimeout(10, TimeUnit.MINUTES);
factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/notfound.html"));
return factory;
}
在spring boot中会有很多的xxxCustomizer帮助我们进行定制配置