spring boot 默认使用tomcat web容器
1.需要移除tomcat依赖
pom.xml 中配置。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
2.增加undertow依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
<groupId>io.undertow</groupId>
<artifactId>undertow-servlet</artifactId>
</dependency>
3.配置undertow启动参数
# http 端口设置 http.port=8081 #https 配置 server.ssl.key-store=classpath:2441387_apitest.zhurongkeji.cn.pfx server.ssl.key-store-password=QSjUBNMA server.ssl.keyStoreType=PKCS12 #启动http2 server.http2.enabled = true
# 是否打开 undertow 日志,默认为 false
server.undertow.accesslog.enabled=false
# 设置访问日志所在目录
server.undertow.accesslog.dir=logs
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程;
server.undertow.threads.io = 16
# 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程,默认值是IO线程数*8;
server.undertow.threads.worker = 256
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理;
server.undertow.buffer-size = 1024
# 是否分配的直接内存(NIO直接分配的堆外内存)
server.undertow.direct-buffers = true
4.配置undertow
@Configuration
public class SpringBootConfig {
@Value("${http.port}")
private Integer httpPort;
@Bean
public ServletWebServerFactory servletContainer(){
UndertowServletWebServerFactory undertow = new UndertowServletWebServerFactory();
// 设置http请求
undertow.addBuilderCustomizers(new UndertowBuilderCustomizer() {
@Override
public void customize(Undertow.Builder builder) {
builder.addHttpListener(httpPort ,"0.0.0.0");
}
});
return undertow;
}
}