avatar

zian

A text-focused Halo theme

  • Java
  • 面试
  • 首页
  • C语音
  • liunx
  • 数据结构与算法
  • 控制台
Home Spring 面试
文章

Spring 面试

Posted 2025-02-9 Updated 2025-02- 9
By Administrator
10~13 min read

问:解释 IOC 容器和DI依赖注入

答:

  • IOC容器:控制反转,将创建对象权利交给IOC容器来完成
  • DI 依赖注入:获取 IOC 中获取创建好的对象,在Spring 常用的依赖注入有:
    • 构造器注入
    • set 方法注入
    • @Autowired 注入

使用 IOC容器和DI依赖注入的好处:

  1. 降低代码耦合
  2. 提高了代码的维护性。

问:AOP 是什么

答:AOP 也叫面向切面编程,将一些公共的逻辑抽取出来,使用公共代码复用,减低耦合。比如:日志保存和事务处理都是使用 AOP 来实现的。

问:你们的项目有没有使用到AOP

答:校园食堂外卖订单系统中使用到了AOP来记录系统日志。主要思路:使用 AOP 环绕通知,在主要业务执行完毕,将请求吃和响应结果,保存到数据库中。

问:AOP 还有那些通知方式

答:

  • 前置通知:业务代码执行之前执行
  • 环绕通知:在业务代码执行的前后都会执行
  • 后置通知:
    • 异常后置通知:在业务代码执行出现异常的时候执行
    • 正常后置通知:在业务代码正常执行完成后执行
    • 后置通知:业务代码执行完成后执行(不论是否出现异常都会执行)

问:Spring 中事务是怎么实现

答:使用 AOP 实现,在业务代码执行之前开启页面,在业务代码执行成功,进行事务提交,在业务代码出异常进行事务回滚。

问:Spring 的事务会在那些情况下会失效

答:

  • 开发者使用 try-catch 来处理异常,不将异常抛出
  • 业务代码出现检查型异常
  • 事务方法不是公开的

问:了解Bean 的生命周期吗

答:

  1. 通过bean定义类获取bean的定义信息
  2. 调用构造方法实例化bean
  3. bean的依赖注入
  4. 处理Aware 接口
  5. Bean的后置处理 - (前置)
  6. 初始方法
  7. Bean的后置处理 - (后置 动态代理)
  8. 销毁Bean

image-pxva.png

问:SpringMVC 执行流程

答:在以前的前后端不分离的项目中大致的执行流程是:

  1. 请求到达前端控制器
  2. 前端控制器调用处理器映射器查询具体的处理器(方法)
  3. 处理器映射器返回处理器对象以及拦截器(可能没有)给前端控制器
  4. 前端控制器调用处理器适配器
  5. 处理器适配进行适配并调用具体的处理器(Controller)
  6. Controller 执行并且返回视图模型对象
  7. 适配器将返回视图模型对象返回给前端控制器
  8. 前端控制器将返回的视图模型交给视图解析器进行处理
  9. 视图解析器返回视图给前端控制器
  10. 前端控制器进行视图渲染返回

image-avzf.png

在前后端分离的项目中步骤减少了

  1. 请求到达前端控制器
  2. 前端控制器调用处理器映射器获取具体的处理器
  3. 处理器映射器将具体的处理器以及拦截器(可能存在)返回给前端控制器
  4. 前端控制器调用处理器适配器
  5. 处理器适配器,进行适配以及调用处理器(Controller )
  6. 前端控制器将适配器处理器处理好的json数据返回给请求处

image-ojvv.png

问:Springboot自动配置原理?

答:Spring Boot的自动配置原理基于 @SpringBootApplication注解,它封装了 @SpringBootConfiguration、@EnableAutoConfiguration和 @ComponentScan。@EnableAutoConfiguration是核心,它通过 @Import导入配置选择器,读取 META-INF/spring.factories文件中的类名,根据条件注解决定是否将配置类中的Bean导入到Spring容器中。

问:Mybatis 中分页是怎么实现

答:

常用的实现方式有:

  1. 在 xml 文件手动使用 limit 等分页关键字实现
    • 好处:不需要引入额外的依赖
    • 缺点:需要自己计算分页的偏移量,以及不同的数据库使用分页关键字可能不同
  2. 使用 PageHelper插件
    • 好处:自动计算分页偏移量,并且可以适配大多的数据库
    • 缺点:引入额外的依赖

问:SpringSecurity

面试
License:  CC BY 4.0
Share

Further Reading

Feb 9, 2025

其他

问: git 如何解决分支冲突 查看分支冲突文件 删除冲突代码 重新提交代码 liunx 常用命令 1. chmod 功能:修改文件或目录的权限。 常见用法示例: chmod +x script.sh:为 script.sh 文件添加可执行权限。 chmod 755 file.txt:使用数字模式设

Feb 9, 2025

Elasticsearch 面试

问:你了解 ElasticSearch 吗? 答:了解,ElasticSearch 一个强大的搜索引擎,在失物招领项目中我就使用 ES ,给 ES 安装中文分词器,就可以根据中文词语来检索索引库。Java

Feb 9, 2025

Spring 面试

问:解释 IOC 容器和DI依赖注入 答: IOC容器:控制反转,将创建对象权利交给IOC容器来完成 DI 依赖注入:获取 IOC 中获取创建好的对象,在Spring 常用的依赖注入有: 构造器注入 set 方法注入 @Autowired 注入 使用 IOC容器和DI依赖注入的好处: 降低代码耦合

OLDER

RabbitMQ 面试

NEWER

Elasticsearch 面试

Recently Updated

  • 其他
  • Elasticsearch 面试
  • Spring 面试
  • RabbitMQ 面试
  • Redis 面试

Trending Tags

ruoyi docker java

Contents

©2025 zian. Some rights reserved.

Using the Halo theme Chirpy