Springboot - 3.容器集成

Web容器

  • 当选择Web容器时,你可以在Spring Boot应用中集成不同的容器。下面是Undertow、Tomcat、Jetty、Netty、WebLogic、WebSphere和WildFly这些常见Web容器的比较,包括它们的特点和优缺点:
容器 特点 优点 缺点
Undertow 轻量级、嵌入式支持、异步处理能力强 低资源占用、高性能、适用于高并发场景 Java EE规范支持相对较弱
Tomcat 流行、成熟、支持Java EE规范 易于使用、大型社区、适用于中小型项目 相对较重、性能可能不如某些轻量级容器
Jetty 轻量级、高性能、嵌入式支持、异步处理能力强 快速启动、适用于中小型项目、异步处理能力强 Java EE规范支持相对较弱
Netty 异步事件驱动、高度可定制、适用于高并发场景 异步处理能力强、可扩展性好 相对复杂、需要深入了解网络编程知识
WebLogic 适用于大型企业应用、支持Java EE规范 强大的Java EE支持、适用于大型企业应用 商业产品、较重、配置复杂
WebSphere 适用于大型企业应用、支持Java EE规范、商业产品 强大的Java EE支持、适用于大型企业应用 商业产品、较重、配置复杂
WildFly 开源Java EE容器、支持Java EE规范、高度可定制 强大的Java EE支持、适用于中小型和大型项目 启动时间可能较长、较大的内存占用

主要说一下Undertow和Tomcat容器

特点 / 方面 Undertow Tomcat
类型 高性能、嵌入式 成熟的Java Web服务器
处理能力 高并发、低延迟 适应一般Web应用需求
资源消耗 轻量级、较少内存和资源 相对较重、较多内存和资源
生态系统 相对较小、插件有限 大型生态系统、丰富的插件和库
社区支持 逐渐增加的社区支持 强大的社区支持
配置复杂度 简单 相对较复杂
部署快速性 适合快速部署和开发 适合成熟项目的部署
嵌入式支持 可以嵌入到Java应用中 不常用作嵌入式应用

使用Undertow

  • 在Spring Boot项目中使用Undertow作为Web容器非常简单,只需要在pom.xml文件中添加相应的依赖并进行一些配置即可。下面是使用Undertow作为Web容器的步骤以及需要注意的事项:

添加Undertow依赖

  • 打开你的项目的pom.xml文件,添加Undertow依赖。
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
    
    <exclusions>
        <exclusion>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-tomcatartifactId>
        exclusion>
    exclusions>
dependency>
<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-undertowartifactId>
dependency>

配置Undertow

  1. 配置Undertow: 默认情况下,Spring Boot会使用Undertow作为Web容器,所以你无需额外配置。但如果你想进行一些自定义配置,可以在application.propertiesapplication.yml文件中添加相关配置项,例如:

  2. 修改默认端口:
    默认情况下,Undertow使用8080端口。你可以通过在application.propertiesapplication.yml中添加以下配置来修改监听的端口:

    server.port=8081
    
  3. 设置上下文路径:
    如果你想在应用中使用特定的上下文路径,可以通过以下配置进行设置:

    server.servlet.context-path=/myapp
    
  4. 启用HTTPS:
    为了启用HTTPS,你需要提供SSL证书和密钥。首先,将证书和密钥放在项目中,然后在application.propertiesapplication.yml中进行配置:

    server.port=8443
    server.ssl.key-store=classpath:keystore.jks
    server.ssl.key-store-password=your-password
    server.ssl.key-password=your-password
    
  5. 配置线程池:
    Undertow使用一个XNIO线程池来处理请求。你可以通过以下配置项进行自定义设置:

    server.undertow.worker-threads=200
    server.undertow.io-threads=100
    
  6. 启用访问日志:
    Undertow可以记录访问日志,你可以通过以下配置启用它:

    server.undertow.accesslog.enabled=true
    server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms)
    server.undertow.accesslog.prefix=access-log-
    server.undertow.accesslog.suffix=.log
    
  7. 配置连接超时:
    你可以配置连接超时、请求超时等,例如:

    server.undertow.connection-idle-timeout=30000
    server.undertow.max-http-post-size=10485760
    
  8. 自定义Undertow监听器:
    如果你需要更精细的控制,可以创建一个Undertow的UndertowBuilderCustomizer Bean,并进行自定义配置。

    @Bean
    public UndertowServletWebServerFactory undertowServletWebServerFactory() {
        UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory();
        factory.addBuilderCustomizers(builder -> {
            // Customize Undertow builder here
            builder.setServerOption(UndertowOptions.IDLE_TIMEOUT, 60000);
        });
        return factory;
    }
    

注意事项

  • Undertow具有较低的资源占用和高性能,适用于高并发场景。
  • Undertow支持异步处理能力,可以在高负载下提供更好的性能。
  • 默认情况下,Undertow会监听8080端口,你可以通过配置server.port来改变监听的端口。
  • 注意Undertow的特性和限制,确保你的应用与其兼容。
  • 可以根据需要配置Undertow的其他属性,如线程池大小、连接超时等。

以上就是在Spring Boot项目中使用Undertow作为Web容器的基本步骤和注意事项。根据项目需求,你可以根据需要进行进一步的配置和调优。

你可能感兴趣的:(Springboot-详解,spring,spring,boot)