Skip to content
本页目录

springBoot的web环境中默认使用Tomcat作为内置服务器,其实springBoot提供了4种内置的额服务器供我们选择:

  • tomcat
  • jetty
  • netty
  • undertow

添加web服务器

打开我们的项目,运行一下,可以发现控制台没有任何服务器的,因为我们并没有导入他们

我们在pom.xml中导入一下web服务器坐标

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

然后再来看一下控制台的输出:

可以看到有一句话是说tomcat服务器运行了8080端口号,这就说明我们导入web服务器成功了

那么如何切换web服务器呢?如果我不想用Tomcat呢?

切换web服务器

首先我们打开springBoot的源码分析一下

打开 Maven: org.springframework.boot:spring-boot-autoconfigure:2.6.2的jar包,找到web文件夹-->embedded文件夹, 这个文件夹的意思嵌入的意思,可以看到这个文件里有我们刚才说的四种服务器,然后我们打开第一个类 EmbeddedWebServerFactoryCustomizerAutoConfiguration,

可以看到这个类中有我们上节说的注解,用来判断这个Bean什么时候加载。这四个服务器的类中都有一个注解 ConditionalOnClass,条件是 Tomcat的类或者jetty的类等等, 也就是说如果有这个类才加载这个Bean,如果没有这个类就不加载这个Bean,所以我们就有办法了,只要把Tomcat的类去掉,换上别的服务器的类不就行了?

那么,如果去掉Tomcat的类呢?

只需要在pom.xml中把这Tomcat排除在外就行了,修改web服务器的坐标,引入jetty的坐标,代码如下:

<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>

重新运行一下项目,可以看到jetty服务器运行起来了