SSM框架常见面试题汇总
Spring篇
- Spring的作用:
- 作用:Spring(轻量级框架),是一个Bean工厂,用于管理Bean的生命周期、框架集成
- 核心:IOC(service反转给acton)/DI(dao–>service) 和 AOP
- IOC的作用:解决对象之间的依赖问题,通过注解 / XML文件将不同的对象进行关联,降低耦合度
- 配置文件中的内容:
- 开启事务注解驱动
- 事务管理器
- 开启注解功能,并配置扫描包
- 配置数据库
- 配置SQL会话工厂,别名,映射文件
- 返回具体数据类型的注解:
@RequestBody
- DI的3种方式:
- 构造器注入(构造方法) ——XML
- 属性的setter方法注入 ——XML
- 接口注入
- Spring中有哪些模式:
- 工厂模式:通过方法创建Bean
- 单例模式:每个Bean的作用域都是单例
- 代理模式:例如AOP
注:Bean的作用域:
singleton, prototype;
request, webSocket;
application, session;
注:单例:在整个运行过程中只有一个实例
- IOC的原理:
- 通过Java反射机制生成对象注入
Java反射机制:
动态获取对象所需要的属性和方法
- AOP的原理:
- 动态代理
动态代理
JDK动态代理(Spring默认)、CGLIB动态代理
Spring MVC篇
- Spring MVC的控制器是单例模式,具有什么问题?如何解决?
- 问题:多线程访问时的线程安全问题
- 解决方案:不用同步,控制器里不要写字段
- SpringMvc中函数的返回值?
- 返回值:String、ModelAndView对象、List、Set
- Spring MVC工作流程:
Mybatis篇
- Mybatis与Ibatis的区别:
- Mybatis是Ibatis的升级版本
- Mybatis的接口绑定:
- 实现了DAO层与XML文件的绑定,自动生成数据操作的相关接口。
- 注解和XML绑定的使用情况:
- 当SQL语句很简单时,使用注解
- Mybatis的核心类是SqlSession
- Mybatis的优势:
- 独立SQL语句
- 将JDBC、底层API进行封装,将结果集自动转换成pojo
- 灵活编写SQL语句
${}
和#{}
的区别?${}
: 简单字符串替换,把${}直接替换成变量的值,再将其进行预编译#{}
: 先将sql中的#{}替换成?
, 再进行预编译,可以防止SQL注入
- Mybatis工作原理图: