Spring SSM面试关键知识点详解

需积分: 0 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开发能力的重要标准。