主页 > 系统脚本讲解

SSM框架笔试题汇总与解析

更新: 2024-10-30 09:08:02   人气:980
一、Spring框架部分

1. **什么是Spring Framework?**

Spring是一个开源的Java平台,它以其轻量级和依赖注入(DI)特性为核心。通过控制反转(IoC)容器管理对象生命周期及相互间的依赖关系,并提供了AOP(面向切面编程),事务处理以及对其他众多优秀第三方库的良好整合能力。

2. **请解释IoC(Inversion of Control)**

IoC是Spring的核心概念之一,也称为“依赖倒置原则”。在传统的程序设计中,我们通常需要自己手动创建并初始化所需要的全部组件;而在采用IoC的设计模式下,应用中的各个组件不再自行负责其本身的实例化过程和对其它服务的查找定位,这些工作交由一个中心化的容器来完成——即所谓的"控制权转移给了外部容器"。

3. **简述Bean Factory 和 ApplicationContext的区别?**

`BeanFactory` 是Spring中最基础的IOC容器接口,提供基本的对象生产和装配功能。而ApplicationContext作为它的扩展,在拥有所有 BeanFactory 功能的基础上还增加了更多的企业级支持如:消息源访问、国际化资源文件读取、事件传播机制等更强大的企业级应用场景的支持。

4. **阐述一下spring AOP的理解及其实现方式有哪些?**

Spring AOP是一种跨领域的关注点分离技术,允许开发者定义诸如日志记录、权限检查这样的横切逻辑,从而将它们从核心业务代码解耦出来。其实现主要包含两种类型:

- 基于代理的经典AOP实现在运行时动态生成子类或使用JDK Proxy为原始目标对象产生代理。

- 切入点(Pointcut): 定义了哪些方法执行前后进行增强操作的具体规则;
- 通知(Advice): 实际要切入的功能模块,包括前置通知(before advice), 后置通知(after returning advice), 异常抛出后通知(after throwing advice), 最终通知(after (finally) advice) 等多种形式;

5. **谈谈你理解的@Transactional注释的作用是什么?如何配置才能使其生效?**

@Transactional 注解用于指定被标注的方法或者类具有数据库交易行为。当在一个方法上添加此注解后,该方法内部的所有SQL语句将会被视为单个数据库事务的一部分,如果其中任何一条出现异常,则整个事务会被回滚以保持数据的一致性。为了使这个注解有效,一般需确保以下几点:

* 配置于带有PlatformTransactionManager 的上下文中。

* 方法所在的bean必须是由Spring托管并通过proxy方式进行调用,因为@Transactional的工作原理基于拦截器(AOP proxying mechanism).

二、Spring MVC 框架相关问题:

6. **描述Spring MVC的主要组成部分和请求响应流程?**

主要组成部件有DispatcherServlet前端控制器、处理器映射HandlerMapping、视图解析ViewResolver以及其他一些辅助工具比如ModelAndView、Controller、Interceptor等。具体来说,一次HTTP请求的过程大致如下:

- 用户发送 HTTP 请求至 DispatcherServlet.
- 根据 HandlerMapping 找到对应的 Controller 处理器。
- 控制器经过业务逻辑处理之后返回 ModelAndView 对象给 DispatcherServlet。
- 视图解析 View Resolver 将模型数据填充进适当的视图(View),渲染结果再反馈给客户端浏览器。

三、MyBatis框架内容:

7. **Mybatis是如何工作的,主要包括哪几个步骤?**

MyBatis 工作流程可以概括成以下几个关键阶段:

- 加载 mybatis-config.xml 文件构建 SqlSessionFactory。
- 使用SqlSession工厂打开一个新的会话(SqlSession)。
- 在SqlSession 中获取Mapper接口对应的实际代理对象,进而执行CRUD或其他自定义查询操作。
- 数据操作完成后提交/关闭当前事务并在合适的时候释放SqlSession资源。

8. **@Select/@Insert/@Update/@Delete四大注解分别有什么作用?**

这四个都是MyBatis提供的用来简化原生XML SQL Mapping的方式,直接在DAO层接口方法上面书写SQL命令:

- @Select : 用于标记查询语句
- @Insert :表示插入语句
- @Update :标识更新语句
- @Delete :代表删除指令

9. **介绍一下MyBatis的一级缓存和二级缓存在什么场景下发挥作用?**

- **一级缓存**: 又称本地缓存,默认开启。同一个 sqlSession 内部对于同一线程发出相同的sql查询请求,MyBatis会在第一次查询的结果集放入缓存区供后续相同请求复用,直至session结束或是发生增删改查的操作导致缓存清空。

- **二级缓存**: 相比一级缓存范围更大,跨越多个SqlSession之间共享的数据存储区域。适用于全局性的经常重复查询且不频繁修改的数据场合,可显著提高系统性能。但需要注意的是,启用二级缓存的同时应充分考虑并发安全性和一致性的问题。

总结起来,SSM(Spring+Spring MVC + MyBatis)组合形成的开发架构能有效地解决传统 Java EE 开发过程中存在的复杂度高、松散度过大等问题,实现了各层次职责清晰划分同时又保证高效协同运作的目标,极大提升了应用程序的整体稳定性和效率。每个独立的部分都在各自的领域内发挥着重要的角色并且高度集成在一起,共同支撑起现代高性能的企业级Web项目开发需求。