Java SSM面试精华:Spring Bean详解与事务管理
需积分: 0 98 浏览量
更新于2024-08-03
收藏 363KB DOCX 举报
在Java SSM(Spring-Struts-SpringMVC)框架的面试中,面试官可能会关注以下几个关键知识点:
1. **Spring Bean的生命周期管理**:
Spring的Bean对象从创建到销毁的过程经历了以下阶段:
- **解析配置**: Spring通过XML配置文件或注解方式解析BeanDefinition,这是Bean的蓝图。
- **实例化**: 根据BeanDefinition反射地创建Bean对象。
- **属性填充**: 通过Aware接口(如BeanNameAware、ApplicationContextAware等)进行依赖注入,然后调用BeanPostProcessor的初始化前后方法。
- **初始化**: 调用`init()`方法进行业务逻辑设置。
- **AOP应用**: 初始化后方法通常用于执行切面编程(AOP),如事务管理等。
- **存入容器**: 创建的Bean对象被添加到Spring容器的管理Map中。
- **业务使用**: 服务调用Bean对象,实现业务功能。
- **生命周期结束**: 当Spring容器关闭时,会调用DisposableBean的`destroy()`方法,释放资源。
2. **Spring Bean的作用域**:
- **singleton**: 默认情况下,Spring中的Bean都是单例模式,意味着在整个应用中只有一个实例。
- **prototype**: 每次请求时,会创建新的Bean实例,适用于需要频繁创建的对象。
- **request**: HTTP请求级作用域,每个请求产生一个独立的Bean实例。
- **session**: 每个HTTP session内创建一个Bean实例,保持跨请求的状态。
- **global-session** (已废弃): 只在Portlet应用中有效,Spring5不再支持。
3. **Spring支持的数据库事务管理**:
- **事务传播行为**: TransactionDefinition接口提供了多种事务传播行为,如:
- DEFAULT: 使用数据库默认的隔离级别,如MySQL的REPEATABLE_READ或Oracle的READ_COMMITTED。
- REQUIRES_NEW: 开启新事务,即使当前有事务也会在新事务中执行。
- NOT_SUPPORTED: 不支持事务,数据库操作不处于任何事务中。
- REQUIRED: 如果当前有事务,则加入;若无事务则新建。
- MANDATORY: 必须在事务中,如果当前没有事务则抛出异常。
- NESTED: 如果当前已有事务,则在嵌套事务中运行;若无事务则新建。
- **事务隔离级别**: 提供了5种隔离级别,包括:
- READ_UNCOMMITTED: 最低,可能导致脏读、幻读或不可重复读。
- READ_COMMITTED: 保证一个事务的修改对其他事务是可见的。
- REPEATABLE_READ: 事务开始时数据的可见性,防止脏读。
- SERIALIZABLE: 最高的隔离级别,完全串行化执行,避免脏读、幻读和不可重复读。
掌握这些知识点对于理解Spring框架的底层工作原理和在实际项目中的应用至关重要。在面试中,候选人不仅要能详细解释以上概念,还要能提供实际应用场景和解决方案。
2022-07-11 上传
2022-11-18 上传
2019-07-23 上传
2023-06-14 上传
苹果牛顿吃
- 粉丝: 23
- 资源: 2790
最新资源
- Angular程序高效加载与展示海量Excel数据技巧
- Argos客户端开发流程及Vue配置指南
- 基于源码的PHP Webshell审查工具介绍
- Mina任务部署Rpush教程与实践指南
- 密歇根大学主题新标签页壁纸与多功能扩展
- Golang编程入门:基础代码学习教程
- Aplysia吸引子分析MATLAB代码套件解读
- 程序性竞争问题解决实践指南
- lyra: Rust语言实现的特征提取POC功能
- Chrome扩展:NBA全明星新标签壁纸
- 探索通用Lisp用户空间文件系统clufs_0.7
- dheap: Haxe实现的高效D-ary堆算法
- 利用BladeRF实现简易VNA频率响应分析工具
- 深度解析Amazon SQS在C#中的应用实践
- 正义联盟计划管理系统:udemy-heroes-demo-09
- JavaScript语法jsonpointer替代实现介绍