一、问题
运行 SpringBoot 项目后,使用 Postman 测试接口时,IDEA 的控制台有如下提示:
Initializing Spring DispatcherServlet 'dispatcherServlet'
Initializing Servlet 'dispatcherServlet'
Completed initialization in 1 ms
问题分析
springboot load-on-startup 默认值是 -1,项目启动时,默认不会初始化 DispatcherServlet,也就是不会调用 Servlet 接口的 init() 方法。
解决方案
方案一
在application.properties配置文件中添加如下配置:
spring.mvc.servlet.load-on-startup=1
方案二
在application.yml配置文件中添加如下配置:
spring:
mvc:
servlet:
load-on-startup: 1
方案三
方案一和方案二等价于在 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 的相关提示,解决成功。