当前位置: 首页 > 知识库问答 >
问题:

spring-boot-starter-tomcat vs spring-boot-starter-web

陆子默
2023-03-14

我正在努力学习spring boot,我注意到有两种选择。

>

  • spring-boot-starter-web-根据文档,它支持全栈web开发,包括Tomcat和web-mvc

    spring-Boot-Starter-Tomcat

    既然#1支持Tomcat,为什么要使用#2呢?

    有什么不同?

    谢谢

  • 共有2个答案

    柳奇思
    2023-03-14

    一个简单的答案是,并不是所有的web应用程序都是SpringMVC应用程序。例如,如果您希望改用JAXR,也许您的客户机应用程序使用RestTemplate,并且您喜欢它们之间的交互方式,这并不意味着您不能使用spring boot或嵌入式tomcat

    下面是一个示例应用程序,它使用spring-boot-starter-tomcat而不是spring-boot-starter-web

    在spring boot使用spring-boot-starter-tomcat的简单球衣应用程序

    https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-samples-jersey

    记住tomcat并不是spring boot中嵌入式servlet容器的唯一选项,这一点也很重要。使用Jetty也很容易上手。使用spring-boot-starter-tomcat可以很容易地将所有库排除在一个模块之外,而如果它们都只是spring-Web的一部分,则排除tomcat库以引入spring-boot-starter-jersey将会更加费力

    <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>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
    

    我从另一个SO问题中复制了这段代码。

    如何在spring配置Jetty-boot(轻松?)

    令狐建修
    2023-03-14

    既然#1支持Tomcat,为什么要使用#2呢?

    spring-boot-starter-web包含spring-boot-starter-tomcat。如果不需要spring mvc,则spring-boot-starter-tomcat可以单独使用(包含在spring-boot-starter-web中)。

    下面是spring-boot-starter-web的依赖关系层次结构:

    有什么不同?

    spring-boot-starter-web包含spring web依赖项(包括spring-boot-starter-tomcat):

    spring-boot-starter
    jackson
    spring-core
    spring-mvc
    spring-boot-starter-tomcat

    spring-boot-starter-tomcat包含与嵌入式tomcat服务器相关的所有内容:

    核心
    EL
    日志
    WebSocket

    如果您想使用spring mvc而不使用嵌入式tomcat服务器怎么办?

    只需将其从依赖项中排除:

    <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>
    
     类似资料:
    • 主要内容:starter,spring-boot-starter-parent传统的 Spring 项目想要运行,不仅需要导入各种依赖,还要对各种 XML 配置文件进行配置,十分繁琐,但 Spring Boot 项目在创建完成后,即使不编写任何代码,不进行任何配置也能够直接运行,这都要归功于 Spring Boot 的 starter 机制。本节我们将对 stater 进行介绍。 starter Spring Boot 将日常企业应用研发中的各种场景都抽取出来,做成一个个的

    • 主要内容:Spring Boot Web 快速开发,示例 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,其本身就是 Spring 框架的一部分,可以与 Spring 无缝集成,性能方面具有先天的优越性,是当今业界最主流的 Web 开发框架之一。   Spring Boot 是在 Spring 的基础上创建一款开源框架,它提供了 spring-boot-starter-web(Web 场景启动器) 来为

    • kaptcha-spring-boot-starter 基于 springBoot2.0 和 Google Kaptcha 的验证码组件,kaptcha-spring-boot-starter 可以很方便的集成验证码到你的系统中。 如何使用 引入 kaptcha-datasource-spring-boot-starter。 <dependency>  <groupId>com.baomidou<

    • 一种简单的,支持不同方案的高性能分布式锁 简介 lock4j-spring-boot-starter是一个分布式锁组件,其提供了多种不同的支持以满足不同性能和环境的需求。 立志打造一个简单但富有内涵的分布式锁组件。 如何使用 引入相关依赖。 <dependency>    <groupId>com.baomidou</groupId>    <artifactId>lock4j-spring-bo

    • springboot启动器,自动在日志中打印输入输出参数,快捷方便,无需任何配置项,依赖少,开箱即用。 无中文乱码,可设置拦截路径和排除路径,可配置是否打印输入和输出。可以用于测试和开发环境排除bug查找问题。也可以直接用于生产环境记录请求。 使用方法: 1.clone代码到本地 git clone git@gitee.com:sjlian/printparam-spring-boot-start

    • lock-spring-boot-starter 介绍 基于 redisson 实现的 spring boot starter 分布式锁框架,实现了可重入锁、公平锁、联锁、红锁、读写锁等常用锁的方式,并支持集群模式下的 redis 。 使用说明 创建 Spring Boot 项目 引入 maven 依赖  <dependency>     <groupId>org.august.spring.bo