Spring框架面试题及答案(2024最新详细版)

Spring框架面试题及答案(2024最新详细版)-mikechen

Java面试经常会考Spring框架面试题,下面就给大家总结了一份Spring框架面试题及答案。

1.什么是Spring框架?包含哪些组件?

Spring是一个开源的Java企业应用程序框架,用于构建基于Java的Web应用程序和服务。

Spring框架,包含:Spring IOCSpring AOP等模块,如下图所示:

Spring框架面试题及答案(2024最新详细版)-mikechen

 

2.Spring框架中的控制反转(IoC)是什么?如何实现控制反转?

Spring IOC是Inversion of Control的缩写,多数书籍翻译成“控制反转”。

OC容器其实就是一个大工厂,它用来管理我们所有的对象以及依赖关系。

  • 原理就是通过 Java 的反射技术来实现的,通过反射我们可以获取类的所有信息(成员变量、类名等等等);
  • 再通过配置文件(xml)或者注解来描述类与类之间的关系。

这样我们就可以通过这些配置信息和反射技术来构建出对应的对象和依赖关系了,如下图所示:

Spring框架面试题及答案(2024最新详细版)-mikechen

 

3.Spring框架中的依赖注入(DI)是什么?如何实现依赖注入?

DI的全称是Dependency Injection,中文称之为依赖注入,它与控制反转(IOC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。

所以现在提到IOC,更多的想到的就是依赖注入(DI)了,如图所示:
Spring框架面试题及答案(2024最新详细版)-mikechen

Spring的依赖注入,一般有三种方式:属性注入、构造器注入、setter方法注入。

 

4.Spring Bean的生命周期?有哪些步骤?

Spring中每个Bean的生命周期如下,主要分为以下8大步骤:

Spring框架面试题及答案(2024最新详细版)-mikechen

主要分为8大步骤:

1、实例化Bean对象;

2、设置Bean属性;

3、如果通过各种Aware接口声明了依赖关系,则会注入Bean对容器基础设施层面的依赖
Aware接口集体包括BeanNameAware、BeanFactoryAware和ApplicationContextAware
分别注入Bean ID、Bean Factory 和ApplicationContext

4、如果实现了BeanPostProcesser,调用BeanPostProcesser的前置初始化方法postProcessBeforeInitialization;

5、如果实现了InitializingBean接口,则会调用afterPropertiesSet方法;

6、调用Bean自身定义的init方法;

7、调用BeanPostProcesser的后置方法postProcessAfterInitialization;

8、容器关闭前调用DisposableBean的destroy方法和自身的destroy方法。

 

9.Spring框架中的AOP是什么?

Spring AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想,是面向对象编程的一种补充。

面向切面编程,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术,如下图所示:
Spring框架面试题及答案(2024最新详细版)-mikechen

Spring AOP它允许在应用程序的业务逻辑之外进行横切关注点的处理。

 

10.AOP的应用场景有哪些?

Spring AOP的应用场景,例如:日志记录、性能监控、事务管理、权限验证等。

Spring框架面试题及答案(2024最新详细版)-mikechen

 

11.Spring框架中的事务管理是什么?如何实现事务管理?

Spring事务的本质其实就是Spring AOP和数据库事务,Spring 将数据库的事务操作提取为 切面,通过AOP在方法执行前后增加数据库事务操作。

Spring事务管理有两种方式:编程式事务管理、声明式事务管理。

Spring框架面试题及答案(2024最新详细版)-mikechen

 

12.Spring框架中的MVC框架是什么?如何实现MVC?

Spring MVC 是一个基于 Java 的实现了 MVC 设计模式的请求驱动类型的轻量级 Web 框架。

SpringMVC主要实现,如下图所示:

Spring框架面试题及答案(2024最新详细版)-mikechen

1)前端控制器(DispatcherServlet)

用户请求到达前端控制器,它就相当于 mvc 模式中的 c,DispatcherServlet 是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。

 

2)处理器映射器(HandlerMapping)

HandlerMapping 负责根据用户请求找到 Handler 即处理器,springmvc 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

 

3)处理器(Handler)

Handler 是继 DispatcherServlet 前端控制器的后端控制器,在 DispatcherServlet 的控制下 Handler 对具体的用户请求进行处理。

由于 Handler 涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发 Handler。

 

4)处理器适配器(HandlAdapter)

通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

 

5)视图解析器(ViewResolver)

ViewResolver 负责将处理结果生成 View 视图,ViewResolver 首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

 

6)视图(View)

SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView 等。

 

13.什么是Spring Boot?它的优势是什么?

SpringBoot来简化Spring应用开发,约定大于配置,去繁化简,是 Spring 开源组织下的子项目。

传统的 SSM/SSH 框架组合配置繁琐臃肿,不同项目有很多重复、模板化的配置,严重降低了 Java 工程师的开发效率。

而 Spring Boot 对 Spring 家族和一些第三方库提供一系列自动化配置的 Starter,来使得开发快速搭建一个基于 Spring 的应用程序。

 

14.SpringBoot 与 SpringCloud 区别?

SpringBoot 是快速开发的 Spring 框架,SpringCloud 是完整的微服务框架,SpringCloud 依赖于 SpringBoot。

 

15.什么是SpringCloud?

Spring框架面试题及答案(2024最新详细版)-mikechen

Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,它将市面上较好的微服务框架集成进来,包括:Eureka、Zuul、Hystrix、Ribbon等组件。

以上就是常见的Spring框架面试题及答案详解,更多的Java面试题及答案,请查看:1000+Java面试题及答案详解

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法