Spring SSM面试关键知识点详解
需积分: 0 143 浏览量
更新于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-07-11 上传
2022-11-18 上传
2019-07-23 上传
2023-06-14 上传
2024-11-08 上传
2024-11-08 上传
心是凉的
- 粉丝: 30
- 资源: 1844
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章