Spring SSM面试关键知识点详解
需积分: 0 130 浏览量
更新于2024-08-03
收藏 363KB DOCX 举报
"Java SSM(Spring、SpringMVC、MyBatis)面试题文档,包含Spring Bean的生命周期、SpringBean的作用域、Spring支持的数据库事务传播行为和事务的隔离级别等相关知识点。"
在Java SSM框架中,面试题通常会涉及到Spring的核心概念和特性,以下是对这些知识点的详细解释:
## Spring Bean的生命周期
Spring管理的Bean经历一系列的步骤从创建到销毁,主要分为以下几个阶段:
1. **解析配置**:Spring容器根据XML配置或者注解信息解析BeanDefinition,这包含了Bean的类信息、依赖关系等。
2. **创建对象**:Spring通过反射机制实例化Bean。
3. **属性注入**:容器使用设置器方法或者构造函数参数将依赖注入到Bean中。
4. **执行Aware接口方法**:如果Bean实现了如`BeanNameAware`,Spring会调用相应的方法,让Bean知道自己的名称。
5. **BeanPostProcessor前处理**:Spring调用实现了`BeanPostProcessor`接口的类的`postProcessBeforeInitialization()`方法,可以在此阶段进行自定义初始化操作。
6. **初始化方法**:执行Bean上的`@PostConstruct`注解的方法,或配置文件中指定的`init-method`。
7. **BeanPostProcessor后处理**:调用`BeanPostProcessor`的`postProcessAfterInitialization()`方法,此时可以进行AOP代理。
8. **放入Bean容器**:Bean对象被添加到Spring的Bean工厂,可供其他Bean引用。
9. **业务使用**:在需要时,Spring容器会从Map中取出Bean供业务逻辑使用。
10. **销毁方法**:当Spring容器关闭时,如果Bean实现了`DisposableBean`接口,会调用`destroy()`方法进行清理工作。
## SpringBean的作用域
SpringBean有四种主要的作用域:
- **Singleton**:默认作用域,Spring容器中只有一个实例,所有地方共享。
- **Prototype**:每次请求都会创建一个新的实例,适合非单例模式的对象。
- **Request**:在一次HTTP请求中,每个请求对应一个新的Bean实例,仅在当前HTTP请求内有效,主要用于Web开发。
- **Session**:在一次HTTP session中,每个session对应一个新的Bean实例,适用于保存用户特定的会话信息。
- **Global Session**:在portlet应用中,全局session作用域不再被Spring5支持。
## 数据库事务的隔离级别
在Spring中,事务的隔离级别可以通过`TransactionDefinition`接口的常量来设定:
1. **ISOLATION_DEFAULT**:使用数据库默认的隔离级别,如MySQL的REPEATABLE_READ或Oracle的READ_COMMITTED。
2. **ISOLATION_READ_UNCOMMITTED**:最低隔离级别,允许脏读、幻读和不可重复读。
3. **ISOLATION_READ_COMMITTED**:防止脏读,但可能发生幻读和不可重复读。
4. **ISOLATION_REPEATABLE_READ**:防止脏读和不可重复读,但可能发生幻读。
5. **ISOLATION_SERIALIZABLE**:最高隔离级别,防止脏读、幻读和不可重复读,但性能最低,因为采用了锁定策略。
事务的隔离级别选择应根据具体业务需求和性能考虑,以平衡数据一致性与并发性能。在Spring中,可以通过编程式事务管理或声明式事务管理来设置事务的隔离级别。
在面试中,理解并能灵活运用这些Spring核心概念,以及对数据库事务管理的深入理解,是衡量候选人是否具备良好Java SSM开发能力的重要标准。
2022-11-18 上传
2022-07-11 上传
2019-07-23 上传
2023-06-14 上传
2024-11-11 上传
2024-11-11 上传
心是凉的
- 粉丝: 30
- 资源: 1844
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍