Java SSM面试精华:Spring Bean详解与事务管理
需积分: 0 68 浏览量
更新于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框架的底层工作原理和在实际项目中的应用至关重要。在面试中,候选人不仅要能详细解释以上概念,还要能提供实际应用场景和解决方案。
242 浏览量
2022-11-18 上传
2019-07-23 上传
598 浏览量
苹果牛顿吃
- 粉丝: 24
- 资源: 2790
最新资源
- SMTPSender(iPhone源代码)
- 类似瀑布流的网格视图效果
- win7 64位安装IE11所需补丁
- WIFIRobots
- 多路DA上位机+单片机源码.zip
- cace:CMS管理员命令执行
- cursoKuberneteswildfly:Curso cursoKubernetes野蝇sobre Cubernetes
- mysql-connector-java-8.0.25.zip
- 建筑节能平台登录网页模板
- 网络游戏-基于移动无线网络、通过远程服务器进行地图解析的方法.zip
- PCBMill:PCBMill FABtotum插件
- 房屋出租管理系统.rar
- Google Chrome:trade_mark:的标签管理器-crx插件
- WindowsFormsApp1.zip
- agora:面向目标的敏捷需求获取
- webtesting-ii-guided:Web测试II模块指导项目