深度解析Java SSM框架面试关键点
需积分: 0 103 浏览量
更新于2024-08-03
收藏 364KB DOCX 举报
"Java SSM(Spring、SpringMVC、MyBatis)面试题文档,包含SpringBean的生命周期、SpringBean的作用域、Spring支持的数据库事务传播行为和事务的隔离级别等相关内容。"
在Java SSM框架中,Spring是核心组件,负责管理对象的生命周期和依赖注入。以下是对面试题中提及的知识点的详细说明:
### SpringBean的生命周期
1. 解析配置:Spring首先解析XML配置文件或通过注解扫描,获取BeanDefinition,它包含了Bean的类名、属性、依赖等信息。
2. 创建Bean对象:根据BeanDefinition,Spring通过反射创建Bean实例。
3. 属性填充:接着,Spring使用setter方法注入Bean的属性值。
4. 调用Aware接口:如果Bean实现了如`BeanNameAware`、`ApplicationContextAware`等接口,Spring会回调这些方法,传递相关信息给Bean。
5. BeanPostProcessor:Spring会调用实现`BeanPostProcessor`接口的类的`postProcessBeforeInitialization()`方法,在初始化之前执行自定义逻辑。
6. 初始化方法:如果Bean声明了`init-method`,Spring会调用该初始化方法。
7. BeanPostProcessor后处理:接着执行`BeanPostProcessor`的`postProcessAfterInitialization()`方法,这里可能涉及到AOP代理。
8. Bean存储:最后,Spring将创建好的Bean放入Bean工厂,供其他组件使用。
9. 销毁方法:当Spring容器关闭时,会调用实现了`DisposableBean`接口的Bean的`destroy()`方法进行清理工作。
### SpringBean的作用域
Spring提供了多种Bean的作用域:
- singleton:默认作用域,Spring容器中只会存在一个Bean实例,所有对这个Bean的请求都将返回同一个对象。
- prototype:每次请求都会创建一个新的Bean实例,适用于需要多个实例的情况。
- request:在Web应用中,每个HTTP请求都会创建一个新的Bean实例,只在当前请求范围内有效。
- session:每个HTTP session中有一个Bean实例,适用于需要跨多个请求共享状态的场景。
- global-session:在portlet应用中,全局session作用域,但Spring 5已不再支持。
### Spring支持的数据库事务传播行为
Spring定义了七种事务传播行为:
- PROPAGATION_REQUIRED:默认行为,如果当前有事务,就加入,如果没有就新建一个。
- PROPAGATION_SUPPORTS:如果当前有事务,就加入,如果没有就不开启事务。
- PROPAGATION_MANDATORY:如果当前有事务,就加入,如果没有,则抛出异常。
- PROPAGATION_REQUIRES_NEW:总是新建一个事务,如果当前有事务,先暂停当前事务。
- PROPAGATION_NOT_SUPPORTED:总是不使用事务,如果当前有事务,就暂停。
- PROPAGATION_NEVER:总是不使用事务,如果当前有事务,就抛出异常。
- PROPAGATION_NESTED:如果当前有事务,就在当前事务中嵌套一个新事务;如果没有,则新建一个事务。
### 事务的隔离级别
隔离级别是确保并发操作之间数据一致性的重要手段:
- ISOLATION_DEFAULT:使用数据库默认的隔离级别,如MySQL的`REPEATABLE_READ`,Oracle的`READ_COMMITTED`。
- ISOLATION_READ_UNCOMMITTED:最低级别,允许读未提交数据,可能导致脏读、幻读、不可重复读。
- ISOLATION_READ_COMMITTED:防止脏读,但可能出现幻读和不可重复读。
- ISOLATION_REPEATABLE_READ:防止脏读和不可重复读,但可能出现幻读。
- ISOLATION_SERIALIZABLE:最高级别,完全串行化,防止所有并发问题,但性能最低。
了解这些知识点对于理解Spring的工作原理和处理并发控制至关重要,是Java开发人员面试中常见的问题。
2022-07-11 上传
2022-11-18 上传
2019-07-23 上传
2023-06-14 上传
2024-10-30 上传
2024-10-30 上传
老歪不歪
- 粉丝: 33
- 资源: 4038
最新资源
- 新代数控API接口实现CNC数据采集技术解析
- Java版Window任务管理器的设计与实现
- 响应式网页模板及前端源码合集:HTML、CSS、JS与H5
- 可爱贪吃蛇动画特效的Canvas实现教程
- 微信小程序婚礼邀请函教程
- SOCR UCLA WebGis修改:整合世界银行数据
- BUPT计网课程设计:实现具有中继转发功能的DNS服务器
- C# Winform记事本工具开发教程与功能介绍
- 移动端自适应H5网页模板与前端源码包
- Logadm日志管理工具:创建与删除日志条目的详细指南
- 双日记微信小程序开源项目-百度地图集成
- ThreeJS天空盒素材集锦 35+ 优质效果
- 百度地图Java源码深度解析:GoogleDapper中文翻译与应用
- Linux系统调查工具:BashScripts脚本集合
- Kubernetes v1.20 完整二进制安装指南与脚本
- 百度地图开发java源码-KSYMediaPlayerKit_Android库更新与使用说明