Java SSM面试精华:Spring Bean详解与事务管理

需积分: 0 1 下载量 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框架的底层工作原理和在实际项目中的应用至关重要。在面试中,候选人不仅要能详细解释以上概念,还要能提供实际应用场景和解决方案。