跳转至

2025年8月19日

面试题

Spring MVC 的核心组件有哪些

好的,SpringMVC中的组件比较多,职责各不相同,那我就说一下核心的几个。

  • 那首先第一个就是DispatchServlet,叫核心控制器,这个是SpringMVC中最为核心的组件,其本质就是一个Servlet,用于将请求分发给相应的处理程序,通过DispatchServlet这个组件,就可以降低组件之间的耦合度。
  • 那第二个核心组件就是HandlerMapping,叫处理器映射器,这个组件的作用,就是根据请求的url匹配能够处理这次请求的Handler(指Controller中的方法)
  • 那还有就是HandlerAdapter,叫处理器适配器,其作用呢,就是来执行Handler处理器的,并获取到执行的结果。
  • 第四个核心组件,就是Handler,叫处理器,其实可以简单理解为,就是我们开发的Controller中的方法。
  • 最后一个就是视图解析器 ViewResolver,其作用是进行视图的解析,根据逻辑视图名解析成真正的视图(View)。当然,在现在前后端分离的开发模式中,基本上也不存在对应的jsp、freemarker这一类的视图解析了。

那刚才所提到的这些个组件呢,只有一个组件,是需要我们开发的,就是Handler,其他的组件,都不需要我们自己开发,框架底层已经提供了这些组件,并且现在我们直接基于SpringBoot进行项目开发,这些组件我们也不需要在做额外的配置了,SpringBoot底层已经自动配置好了。

面试答法示例

SpringMVC的核心就是五个组件:

DispatcherServlet 核心控制器

HandlerMapping 处理器映射器HandlerAdapter 处理器适配器Handler 处理器,就是我们写的Controller

最后ViewResolver解析视图

Spring MVC 的请求执行流程是什么样的

SpringMVC的请求执行流程如下所示:

  1. 用户发送请求到前端控制器DispatcherServlet。
  2. DispatcherServlet接收到请求之后,会调用HandlerMapping(处理器映射器),来查找能够处理本次请求的处理器,生成处理器对象及处理器拦截器(如果有),然后再一起返回给DispatcherServlet。
  3. DispatcherServlet调用HandlerAdapter处理器适配器,让其执行对应的Handler。
  4. HandlerAdapter执行对应的Handler(Controller中的方法),并将执行的结果封装在ModelAndView中返回给DispatcherServlet。
  5. DispatcherServlet将ModelAndView传给ViewResolver(视图解析器),视图解析器负责对视图进行解析处理,最后返回视图对象View。
  6. DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  7. DispatcherServlet响应用户。

面试答法示例

用户请求先到DispatcherServlet,它会通过HandlerMapping找到对应的处理方法;

然后交给HandlerAdapter去执行。执行的就是我们写的Controller方法,结果会封装到ModelAndView里。

接着DispatcherServlet把它交给ViewResolver去解析成真正的视图,最后渲染视图并把结果返回给用户。

聊聊 Spring MVC 中的常用注解

  • @RequestMapping:用于映射请求路径,可以定义在类上和方法上;常见扩展有@GetMapping@PostMapping@PutMapping@DeleteMapping
  • @RequestBody:接收请求体中的JSON数据,转成Java对象。
  • @RequestParam:获取请求参数,比如URL中的?key=value,也可以设置默认值。
  • @PathVariable:从请求路径中获取参数,如/user/{id}
  • @ResponseBody:把方法返回值直接作为HTTP响应体,一般返回JSON。
  • @RequestHeader:获取指定的请求头数据。

面试答法示例

路径用@RequestMapping,参数用@RequestParam和@PathVariable,JSON数据用@RequestBody,返回结果用@ResponseBody

聊聊 Spring 框架中的常用注解

第一类:声明bean的,有@Component@Service@Repository@Controller

第二类:依赖注入相关的,有@Autowired@Qualifier@Resource

第三类:设置作用域的@Scope

第四类:Spring配置相关的,比如@Configuration@ComponentScan@Bean

第五类:跟AOP相关的,比如@Aspect@Before@After@Around@AfterReturning@AfterThrowing@Pointcut

面试答法实例

Spring 框架常用注解大致分五类:

声明Bean的有 @Component、@Service、@Repository、@Controller

依赖注入的有 @Autowired

作用域是 @Scope

配置相关有 @Configuration、@Bean

AOP相关有 @Aspect、@Before、@After