一、背景

运行SpringBoot项目后,使用Postman测试接口时,Idea的控制台有如下提示:

Initializing Spring DispatcherServlet 'dispatcherServlet'
Initializing Servlet 'dispatcherServlet'
Completed initialization in 1 ms

二、原因分析

spring boot load-on-startup默认值是-1,项目启动时,默认不会初始化DispatcherServlet,也就是不会调用Servlet接口的init()方法。

三、解决方法

spring.mvc.servlet.load-on-startup设置成0或正整数,项目启动时执行初始化即可解决。

方法1、在application.properties配置文件中添加如下配置

spring.mvc.servlet.load-on-startup=1

方法2、在application.yml配置文件中添加如下配置

spring:
  mvc:
    servlet:
      load-on-startup: 1

方法1和方法2等价于在 Spring MVC 项目的web.xml文件中添加如下配置:

  <servlet>
  	<servlet-name>dispatcher</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<async-supported>true</async-supported>
  	<load-on-startup>8</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>dispatcher</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

写在最后

重新运行项目后,调用接口,Idea控制台已无dispatcherServlet的相关提示,解决成功。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐