SSM高频面试题

1. SSM框架是什么?简要介绍一下它的三个组成部分。

SSM框架是指Spring + Spring MVC + MyBatis的组合,用于快速开发Java Web应用程序。其中:

- Spring是一个轻量级的容器,提供了IoC和AOP等特性。
- Spring MVC是Spring框架的一个扩展,用于构建基于模型-视图-控制器(MVC)模式的Web应用程序。
- MyBatis是一款优秀的持久层框架,支持自定义SQL、存储过程和高级映射等功能。

2. 请简述一下Spring框架中的IoC容器是如何工作的?

IoC(Inversion of Control,控制反转)是指将对象的创建、依赖注入等操作交给容器来完成,从而实现应用程序的松耦合。在Spring框架中,IoC容器负责管理Bean对象的生命周期和依赖关系,其具体工作流程如下:

- 配置文件读取:从XML、注解或配置类等源中读取配置信息。
- Bean实例化:根据配置信息创建Bean实例,包括调用构造方法和设置属性值等。
- Bean依赖注入:将创建好的Bean实例注入到其他Bean中,完成依赖关系的建立。
- Bean生命周期管理:IoC容器负责管理Bean对象的生命周期,包括初始化、销毁等。

3. 在Spring框架中,什么是AOP?它有哪些应用场景?

AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,用于将与业务无关的横切逻辑(如日志记录、安全控制等)从业务逻辑中分离出来,实现系统的模块化和可重用性。AOP的主要应用场景包括:

- 日志记录:在方法执行前后打印日志。
- 安全控制:检查用户权限和角色,保证系统安全。
- 事务管理:确保数据库操作的原子性、一致性、隔离性和持久性。
- 性能监控:统计方法的执行时间和调用次数,优化系统性能。

4. MyBatis框架中的Mapper文件是什么?它的作用是什么?

在MyBatis框架中,Mapper文件是指SQL映射文件,用于定义SQL语句和Java类之间的映射关系。其中,Mapper文件的主要作用包括:

- 定义SQL语句:Mapper文件中可以定义各种类型的SQL语句,包括简单查询、多表连接查询、批量更新等。
- 映射结果集:通过配置ResultMap,将查询结果映射到Java类的属性中。
- 参数传递:定义SQL语句中的参数类型和名称,从而使MyBatis能够正确解析参数。
- 执行动态SQL:通过定义if、choose、foreach等标签,实现动态SQL的构建。

5. 在Spring MVC框架中,什么是控制器?它有哪些常用注解?

在Spring MVC框架中,控制器(Controller)是用于处理用户请求的组件,负责接收请求、调用业务逻辑处理器、返回响应结果等。常用的控制器注解包括:

- @Controller:声明一个控制器类。
- @RequestMapping:指定控制器处理的URL路径和HTTP方法。
- @RequestParam:用于绑定请求参数到方法参数上。
- @PathVariable:用于获取URI路径中的变量值。
- @ResponseBody:用于将方法返回值转换为指定格式(如JSON)并写入响应体中。

6. Spring Boot框架的优势是什么?请简要说明一下。

Spring Boot框架是Spring家族的一员,旨在简化Spring应用程序的创建和部署。其主要优势包括:

- 简化配置:Spring Boot通过自动配置机制消除了大量的XML配置,使得应用程序的配置更加简洁。
- 快速开发:Spring Boot提供了丰富的开箱即用的功能模块,如Web、JPA、Security等,可以快速构建各种类型的应用程序。
- 内嵌服务器:Spring Boot支持内嵌Tomcat、Jetty等服务器,使得应用程序的部署更加方便。
- 易于维护:Spring Boot提供了统一的日志和异常处理机制,使得应用程序的维护更加容易。

7. 在MyBatis框架中,动态SQL的常见标签有哪些?请简要说明一下它们的作用。

MyBatis框架提供了丰富的动态SQL标签,用于根据不同条件生成不同的SQL语句。其中,常见的标签包括:

- if:判断某个条件是否成立,从而决定是否包含该SQL语句块。
- choose/when/otherwise:类似于Java中的switch语句,根据条件选择不同的SQL语句块。
- foreach:循环遍历数组或集合,并将其中的元素作为参数传递给SQL语句块。
- include:引入其他Mapper文件中定义的SQL语句块。
- where/set:用于生成动态的WHERE或SET子句。

8. Spring框架中的事务是如何工作的?请简述一下。

在Spring框架中,事务管理是通过AOP技术实现的。具体来说,Spring采用了代理模式,将目标对象包装在一个代理对象中,并在代理对象中添加事务相关的逻辑。其主要工作流程如下:

- 开启事务:当调用带有@Transactional注解的方法时,Spring会首先开启一个新的事务。
- 执行业务逻辑:在事务管理范围内执行业务逻辑,包括数据库操作、文件操作等。
- 提交或回滚事务:如果业务逻辑执行成功,Spring会提交事务;否则,会回滚事务,撤销所有已经提交的操作。

9. Spring框架中的Bean有哪些作用域?它们之间有什么区别?

在Spring框架中,Bean的作用域决定了Bean实例的生命周期和可见范围。常见的作用域包括:

- singleton:单例模式,即每个容器中只有一个Bean实例。
- prototype:原型模式,即每次请求都会返回一个新的Bean实例。
- request:每次HTTP请求都会创建一个新的Bean实例,该实例仅在当前请求范围内可见。
- session:每个HTTP会话都会创建一个新的Bean实例,该实例仅在当前会话范围内可见。
- global session:每个全局HTTP会话(通常是在基于Portlet的Web应用程序中使用)都会创建一个新的Bean实例。

10. 请简述一下Spring Boot自动配置的原理。

Spring Boot自动配置机制是通过@EnableAutoConfiguration注解来实现的。其主要工作流程如下:

- 加载扫描路径:Spring Boot会自动扫描所有的类路径,并加载META-INF/spring.factories文件中的所有自动配置类。
- 依赖分析:Spring Boot根据项目中引入的依赖库,对自动配置类进行筛选和排序,只保留符合条件的部分。
- 开启自动配置:根据最终确定下来的自动配置类,Spring Boot会将这些类作为Bean注入到IoC容器中,并触发相应的初始化操作。
- 自定义配置:如果需要更改某个自动配置类的默认配置,可以在application.properties或application.yml文件中通过特定的属性进行自定义配置。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java&Vue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值