作者简介: 不肯过江东丶,一个来自二线城市的程序员,致力于用“猥琐”办法解决繁琐问题,让复杂的问题变得通俗易懂。
支持作者: 点赞、关注、留言~
Spring 是一个优秀的框架,它让我们的开发工作变得更快捷更高效,从简单性、可测试性和松耦合性角度而言,绝大部分 Java 应用都可以从 Spring 中受益。不仅各位小伙伴在开发应用软件的时候离不开它,就连面试的过程中也常常出现它的身影。这不,前几天大明白去面试的时候,就被面试官来了一波 Spring 三连问,我们就一起来看看他被问到的这三个问题…
Spring 面试三连问 Spring 第一问:请你谈谈 SpringMVC 的运行过程一说到 SpringMVC,大家脑海里肯定会出现一个词——分层,SpringMVC 一共分为了三层,分别是模型(Model)、视图(view)、控制器(controller),大明白听到这个问题的时候也是这么想的,于是他自信满满的说出了自己的回答
大明白:SpringMVC 一共分为了三层,分别是模型(Model)、视图(view)、控制器(controller),当我们在页面发起请求后,会进入到对应的控制器中,在控制器中执行了对应的业务逻辑后执行相应的 SQL 语句,最终将 SQL 语句执行后的结果返回到页面中进行展示。
各位小伙伴觉得大明白回答的怎么样?其实他的回答也没错,但是只说出了最浅显的东西,并没有说出面试官想要的答案,下面我们就一起看看 SpringMVC 的详细运行过程:
- 用户发送请求至前端控制器 DispatcherServlet 。
- DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器,请求获取 Handler。
- 处理器映射器根据xml配置、注解进行查找,找到具体的处理器后,生成处理器对象及处理器拦截器(如果拦截器有则生成)并一起返回给DispatcherServlet。
- DispatcherServlet 调用 HandlerAdapter 处理器适配器,请求执行 Handler。
- HandlerAdapter 经过适配调用具体的处理器(即 Controller 控制器)。
- Controller 执行完成返回 ModelAndView。
- HandlerAdapter 将 Controller 执行结果 ModelAndView 返回给 DispatcherServlet 。
- DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器,来查找 View 视图。
- ViewReslover 解析后返回具体 View 视图。
- DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。
- 视图渲染完成后,将渲染后的视图返回给 DispatcherServlet 。
- 最终 DispatcherServlet 响应用户。
Spring 第二问:SpringMVC 的核心控制器是什么 需要注意的是:在整个运行过程中,前端控制器 DispatcherServlet 是负责接受请求和转发请求的,它也是最核心的部分(毕竟在这十二个步骤中,有十个步骤都与它有直接的关系)。
看完 Spring 的第一问,相信各位小伙伴都已经知道了第二问的答案。没错!就是前端控制器 DispatcherServlet。毕竟 SpringMVC 的运行过程只有十二步,而其中有十步都与 DispatcherServlet 有着直接的联系,DispatcherServlet 的地位可以说是不可撼动的。
Spring 第三问:Spring Boot 的核心注解是什么相信这道题有很多小伙伴都能回答的上来,它就是我们在启动类上写的 @SpringBootApplication 注解。@SpringBootApplication 注解是 Spring Boot 中最最最核心的注解,通过源码我们可以知道,它其实是一个组合注解,相当于@SpringBootConfigryation、@EnableAutoConfiguration、@ComponentScan三个注解的组合,它不仅可以表示这是一个 Spring Boot 项目,而且可以自动化配置文件,并开启 Spring Boot 的各项能力。
可能有些小伙伴不太清楚这三个注解的含义,我们就简单的说几句:
@SpringBootConfigryation: @SpringBootConfiguration 是 Spring Boot 项目的配置注解,这也是一个组合注解。我们可以把他理解成是 @Configuration 注解的变体,用来修饰 Spring Boot的配置。
@EnableAutoConfiguration: @EnableAutoConfiguration 注解用于启用自动配置,简单来说就是开启此注解后 Spring Boot 可以根据依赖中的 Jar 包,自动选择实例化某些配置。
@ComponentScan: @ComponentScan 是组件扫描注解,我们可以指定其扫描的路径,也可以选择不指定,在不指定扫描路径时默认扫描@SpringBootApplication 所在类的同级目录以及它的子目录。
小结上面讲到的是 Spring 中最常见的三个面试题,但其实 Spring 相关的知识或面试题远远不止这么简单,还有更深层次的东西需要我们去一点一点去挖掘。无奈本人才疏学浅,更深层次的东西还没有了解清楚,这里就不写了,也是怕误导各位小伙伴。如果您有更好、更经典的 Spring 知识或面试题,还请您动动可爱的小手在评论区留言,蟹蟹
本人经验有限,有些地方可能讲的没有特别到位,如果您在阅读的时候想到了什么问题,欢迎在评论区留言,我们后续再一一探讨
希望各位小伙伴动动自己可爱的小手,来一波点赞+关注 (✿◡‿◡) 让更多小伙伴看到这篇文章~ 蟹蟹呦(●’◡’●)
如果文章中有错误,欢迎大家留言指正;若您有更好、更独到的理解,欢迎您在留言区留下您的宝贵想法。
你在被打击时,记起你的珍贵,抵抗恶意;
你在迷茫时,坚信你的珍贵,抛开蜚语;
爱你所爱 行你所行 听从你心 无问东西



