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