Spring Boot如何将请求路由至Dispatcher Servlet?是否需额外配置?
Hey 朋友!咱们来一步步拆解你关于Spring Boot和DispatcherServlet的问题~
关于Spring Boot中DispatcherServlet的请求转发问题解答
1. Spring Boot是如何将所有请求转发至DispatcherServlet的?
Spring Boot靠自动配置机制悄悄帮我们搞定了这件事,核心是DispatcherServletAutoConfiguration这个自动配置类:
- 当你启动Spring Boot应用时,这个类会先检查项目里有没有自定义的
DispatcherServlet实例。如果没有,它就会自动创建一个默认的DispatcherServlet。 - 紧接着,它会生成
DispatcherServletRegistrationBean,把这个DispatcherServlet注册到内嵌的Servlet容器(比如Tomcat、Jetty)里,并且默认把映射路径设为"/"——这个路径的意思是,所有进来的HTTP请求都会被匹配到这个Servlet上。 - 等内嵌容器启动完成后,就会按照这个注册规则,把所有请求都转发给DispatcherServlet处理,之后才会流转到我们自己写的Controller层。
2. 是否需要像Spring MVC那样配置该转发规则?
答案是完全不需要!Spring Boot的自动配置已经把传统Spring MVC里那些繁琐的配置都包办了:
- 在传统Spring MVC项目中,我们要么得在
web.xml里写一堆<servlet>和<servlet-mapping>标签来配置DispatcherServlet的映射,要么用Java配置类手动注册DispatcherServlet并设置路径,步骤多还容易出错。 - 但Spring Boot启动时,
DispatcherServletAutoConfiguration会自动完成上述所有操作,默认就把所有请求导向DispatcherServlet,咱们啥额外配置都不用写。
当然,如果有特殊需求(比如只想让DispatcherServlet处理"/api/*"路径下的请求),也可以轻松修改:
在application.properties里加一行:
spring.mvc.servlet.path=/api/*
或者用application.yml的话:
spring: mvc: servlet: path: /api/*
要是需要更复杂的自定义,也可以自己创建DispatcherServletRegistrationBean实例来覆盖默认配置,但绝大多数日常开发场景下,默认配置就完全够用啦。
内容的提问来源于stack exchange,提问作者Manojkumar murugan
相关产品推荐
相关产品推荐

