有些面试官习惯笼统的问SSM,那么如何抓住核心点来回答呢?想要简单又快速的解答从以下几个点来回答即可

S:Spring,简述框架和对IOC/AOP的理解,一般简述框架从三点来讲,第一讲框架为了解决什么样的问题,第二讲工作原理或工作流程(或者可以说核心组件的工作原理),第三讲特性

S:SpringMVC,解释什么是MVC,最好了解下MVC的进化史,说出MVC的工作流程

M:MyBatis,简述框架和工作原理

详细见下文

Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,具有简单性、安全性、易于集成等优势,使得开发效率得到了提升,官方使用这三个词来形容——quicker, easier, and safer。

IOC是Inversion of Control的缩写,原理就是通过第三方(也就是所谓的ioc容器)实现具有依赖关系的对象之间进行解藕。

为什么称为控制反转,我们来举个例子

比如,有两个类A和B,在没有IOC容器的情况下,类A如果引用了B类,不管是创建还是使用B对象控制权都在A;但是当IOC介入后,A和B就失去了关联,当A需要调用B的方法时,IOC会主动创建一个对象B注入到A需要的地方,从这里不难看出,A获得依赖对象B,由主动变为被动,控制权被颠倒了,所以才有了”控制反转“的说法。

IOC另外一个叫法“依赖注入”(Dependency Injection),这种说法只是从IOC容器的角度来看的,因为获得依赖对象的过程被反转了,就是说原本自己来管理的对象方式转交给IOC容器主动注入完成,所以我们也可以说依赖注入。

IOC的实现原理就是通过反射机制 XML解析/注解,使用到了单例模式和工厂模式

AOP,即Aspect Oriented Programming 面向切面编程,AOP面试过程中一般会重点提问两个点,一个是原理,使用了动态代理的设计模式,如果目标对象是接口,则使用JDK的动态代理,否则使用的CGLIB动态代理;一个是使用场景,比如日志打印,性能监控,事务控制(Spring中的注解@Transactional),安全控制,异常处理,多数据源切换等等。

同样是两点,第一MVC的含义,这里并不是简简单单讲出M是Model,V是View,C是Controller,要详细讲出其作用Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

SpringMVC的工作流程,建议自己画出时序图进行理解记忆,有能力的同学还可以结合源码来学习

1、 用户发送请求至前端控制器DispatcherServlet。 2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、 DispatcherServlet调用HandlerAdapter处理器适配器。 5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 6、 Controller执行完成返回ModelAndView。 7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。 8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。 9、 ViewReslover解析后返回具体View。 10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 11、DispatcherServlet响应用户。

同样是两点第一点依旧讲概念,MyBatis是一个优秀的持久层框架,支持了定制化SQL、存储过程和高级映射,封装了JDBC对数据库进行的操作,包括注册驱动、创建Connection、创建Statement、手动设置参数、结果集检索等,通过xml或者注解使Java的POJO、数据库表建立映射关系。

第二点讲MyBatist的工作原理

ssm详细知识点面试题 你是如何理解SSM的(1)

面对这样问题只要能回答出核心点即可,通过理解原理去理解概念,通过阅读源码去理解原理,慢慢的转换成自己的话语去讲述。

,