80 个最热门的 Spring MVC 面试问题(2025 年)

以下是 Spring MVC 面试问题和答案,可以帮助应届毕业生和有经验的应聘者获得理想的工作。

 

面向新生的 Spring MVC 面试问题和答案

1)什么是弹簧?

Spring 是一个框架,它可以帮助 Java 程序员进行代码开发,它为 Java 程序员提供 IOC 容器、依赖注入器、MVC 流和许多其他 API。


2)Spring 中的 Advice 是什么?

这是方面的执行。建议就像让您的应用程序学习一个新技巧。它们通常在连接点处引入。

👉 免费 PDF 下载:Spring MVC 框架面试问题与答案


3)Spring框架中bean的默认作用域是什么?

Spring框架默认的bean作用域是Singleton。


4)请说出 Spring 支持的事务管理类型?

Spring支持的事务管理有:

  • 声明式事务管理。
  • 程序化事务管理。

5)Spring框架中的Singleton bean是线程安全的吗?

不,单例 bean 在 Spring 框架中不是线程安全的。


6)Spring框架有什么好处?

以下是 弹簧框架:

  • 组件的广泛使用
  • 雷乌斯能力
  • 去耦
  • 通过使用单例、工厂、服务定位器等模式实现来减少编码工作量。
  • 拆除泄漏连接
  • 声明式事务管理
  • 易于与第三方工具和技术集成。

Spring MVC 面试题
Spring MVC 面试题


7)什么是 Bean Factory?

Bean Factory 是 Spring 框架的核心,它是一个轻量级容器,用于加载 bean 定义并管理 bean。Bean 使用 XML 文件进行配置并管理单例定义的 bean。它还负责生命周期方法并注入依赖项。它还删除临时单例和工厂。


8)定义 Bean Wiring?

Bean 接线是在特定 Spring 容器中的 Bean 之间的应用程序组件之间创建关联。


9)什么叫Spring MVC?

Spring MVC 是一个共享控制器实例,用于处理在 IoC 容器中运行的请求类型控制器和拦截器。它还允许多个 Dispatcher Servlet 共享应用程序上下文接口,但不能共享基于类的接口。


10)为什么需要Spring框架?

需要 Spring 框架是因为 -

  • 非常轻的容器
  • 骨架
  • 国际奥林匹克委员会
  • AOP

11) 说出 Spring 框架中使用的各个模块?

  • AOP 模块(面向切面编程)
  • JDBC抽象和DAO模块
  • 核心容器模块
  • MVC框架模块
  • 应用程序上下文模块
  • O/R映射集成模块(对象/关系)
  • Web 模块

12)解释一下 Spring 中的 RowCallbackHandler?

ResultSet 中的每一行都会调用 RowCallbackHandler,并用于从 ResultSet 中读取值。


13)定义应用程序上下文模块?

这是一个非常重要的模块,提供各种必要的服务,如 EJB 集成、远程处理、JNDI 访问和调度。它将 Spring 转变为一个框架。它还通过应用生命周期事件扩展了 BeanFactory 的概念,为国际化消息和验证提供支持。


14)写关于AOP模块的内容?

AOP 模块用于为 Spring 应用程序创建方面。它还支持 Spring 中的元数据编程。


15)什么是 BeanFactory 接口?

Bean 工厂接口用于提供对象创建的配置框架以及围绕对象管理的基本功能。


16)说出Spring中ApplicationContext和BeanFactory之间的区别?

  • ApplicationContext 允许存在多个配置文件,而 BeanFactory 只允许一个。
  • ApplicationContext 可以向已注册为侦听器的 bean 打印事件。BeanFactory 不支持此功能。
  • ApplicationContext 还支持应用程序的生命周期事件、国际化消息和验证,还提供 EJB 集成、远程处理、JNDI 访问和调度等服务。Bean Factory 也不支持这些功能。

17)什么是自动装配?

自动装配用于建立协作 bean 之间的关系。Spring 容器可以自动解析 bean 的协作者。


18)自动装配有哪些不同的模式?

自动装配有五种不同的模式:

  • 不: 无自动连线
  • 按名字: 可以通过属性名称进行自动装配
  • 按类型: 属性类型为自动装配
  • 构造函数: 它类似于 byType,并且它的属性位于构造函数中
  • 自动侦测: Spring 允许从 byType 或构造函数中选择自动装配

19)如何开始使用 spring?

从 Spring 开始,需要执行以下步骤:

  • 从 spring 的站点下载 Spring 及其依赖文件。
  • 创建应用程序上下文 xml 来定义 bean 及其依赖项
  • 将应用程序上下文 xml 与 web.xml 集成
  • 部署并运行应用程序

20)bean 生命周期的方法有哪些?

Bean生命周期有两个重要方法:

  • 设置 – 当 bean 被加载到容器中时调用
  • Teardown – 当 bean 卸载到容器中时调用

21)监听器有哪些不同类型的事件?

以下是监听器的不同事件类型:

  • ContextClosed事件 – 当上下文关闭时调用此事件。
  • ContextRefreshed事件 – 上下文初始化或刷新时调用此事件
  • 请求处理事件 – 当 Web 上下文处理请求时,会调用此事件

22)区分单例和原型 bean?

Singleton 意味着每个对象实例只定义一个 Bean,而 Prototype 意味着在 Spring 中对多个对象实例进行一个定义。


23)依赖注入有哪些类型?

Spring框架支持两种类型的依赖注入:

  • 二传手注射
  • 构造函数注入

24)写一下核心容器模块?

核心容器模块负责Spring框架的基本功能,整个Spring框架都是以这个模块为基础构建的。


25)什么是 AOP 模块?

该AOP模块用于支持Spring的应用程序。提供了AOP联盟的支持,以确保Spring与其他AOP框架之间的互操作性。

它指示spring在源代码中添加注释并告知如何应用方面。


针对有经验者的 Spring MVC 面试问题

26)什么是AOP联盟?

AOP 联盟是一个开源项目,旨在促进 AOP 的采用。AOP 联盟的目标是定义一组通用的组件和接口,以提高不同 AOP 实现之间的互操作性。


27)什么叫 spring 配置文件?

Spring 配置文件是一个 XML 文件,它包含类信息。它还描述了这些类如何配置以及如何相互交互。


28)Autowire 有哪些不同类型?

自动连线有四种不同类型:

  • 按名字
  • 按类型
  • 构造函数
  • 自动检测

29)spring 支持哪些类型的事务管理?

以下是spring目前支持的事务管理类型:

  • 陈述
  • 以编程方式

30)何时使用声明式和程序式事务管理?

当只有少量事务操作时,建议使用编程式事务管理。但是,如果需要处理大量事务操作,则最好使用声明式事务管理。


31)什么是IOC?

IOC(控制反转模式)又称为依赖注入。IOC 指示程序员描述如何创建对象,而不是实际创建对象。但在此设计模式中,此控制权已交给汇编器,汇编器将在需要时实例化所需的类。


32)写出与 Listener 相关的不同类型事件?

与监听器相关的不同类型的事件有:

  • ContextRefreshed事件 – 当上下文被刷新或初始化时,它会被调用。
  • 请求处理事件 – 当 Web 上下文处理请求时,会调用此函数。
  • ContextClosed事件 – 当上下文关闭时,这将被调用。

33)什么是方面?

方面也称为日志记录,是整个应用程序所必需的。日志记录或方面是使用 AOP 的应用程序中的一个横切功能。


34)什么是连接点?

应用程序中可以引入方面的点称为连接点。此点可以是正在修改的字段、正在调用的方法,甚至是正在抛出的异常。在这些点上,可以添加新方面的代码以向应用程序引入新行为。

此时可以将方面代码插入到应用程序的正常流程中以改变当前行为。


35)什么叫建议?

通知会告知应用程序新的行为,它是方面的实现。它被插入到应用程序的连接点。

建议是方面的实现。它类似于告诉应用程序一种新行为。通常,建议在连接点插入到应用程序中。


36)什么是切入点?

切入点用于允许在何处应用建议。


37)什么是编织?

编织用于通过将方面应用到目标对象来创建新的代理对象。


38) 单例 和 原型 bean 之间有什么区别?

单例Bean – 每个 Spring IOC 容器的单个 bean 定义对应单个对象实例

原型 Bean – 每个 Spring IOC 容器的单个 bean 定义可以对应任意数量的对象实例


39)编织可以应用在哪些方面?

以下列出可应用编织的点:

  • 编译时间
  • 课程加载时间
  • 运行时

40)AutoProxying 有哪些不同类型?

以下是不同类型的 AutoProxying:

  • BeanName自动代理Creator
  • DefaultAdvisorAutoProxyCreator
  • 元数据自动代理

41) 如何使 bean 成为单例或原型?

bean 标签有一个名为“singleton”的属性。如果该属性的值为“TRUE”,则该 bean 为单例,否则该 bean 为原型。


42) 哪些类用于控制数据库连接?

以下是用于控制数据库连接的类:

  • 数据源实用程序
  • 智能数据源
  • 摘要数据源
  • 单连接数据源
  • 驱动管理器数据源
  • TransactionAware 数据源代理
  • 数据源事务管理器

43)描述 Spring 框架中的 DAO?

DAO 用于提供集成 Java 数据库连接和对象关系映射对象。DAO 是 Spring 框架为 JDBC、Hibernate、JDO、JPA、通用客户端接口和 Oracle.


44)什么是自动代理?

Autoproxying 用于为 spring 用户自动创建代理。它提供以下两个类来支持此自动代理创建:

  • BeanName自动代理Creator
  • DefaultAdvisorAutoProxyCreator

45)什么是元数据自动代理?

元数据自动代理可以以元数据驱动的方式执行。这是由源级属性决定的,并将元数据保留在源代码中。

这将元数据维护在一个地方,主要用于声明性事务支持。


46)Spring 中的“Throws Advice”是什么?

“Throws Advice” 定义发生异常时的行为。它是一个接口,没有需要实现的方法。

实现此接口的类应该具有以下签名的方法:

  • 虚空样本投掷(投掷平板电脑)
  • Void samplethrow(方法 m,对象[] o,对象目标,投掷平板电脑)

47)Spring工作中使用到的各种编辑器有哪些?

Spring Framework 提供的各种自定义编辑器有:

  • 属性编辑器
  • URL编辑器
  • 类编辑器
  • 自定义日期编辑器
  • 文件编辑器
  • 本地化编辑器
  • 字符串数组属性编辑器
  • 字符串修剪器编辑器

48)Spring框架有哪些优点?

以下是Spring框架的优点:

  • 分层 Archi质地
  • 启用普通旧版 Java 对象(PO​​JO)编程,实现持续集成和可测试性
  • 依赖注入和控制反转简化了 JDBC
  • 可用于商业用途的开源框架

49)如何使用 Spring 框架访问 Hibernate?

可以通过以下两种方式访问​​Hibernate:

  • 通过 IOC 和 Callback 以及 HibernateTemplate。
  • 通过应用 AOP 拦截器并扩展 HibernateDaoSupport。

50) Spring 2.0 支持哪些不同的 Channel?

以下是spring 2.0版本支持的通道:

  • 可轮询通道
  • 可订阅频道
  • 发布订阅频道
  • 队列通道
  • 优先频道
  • 集合通道
  • 直接频道
  • 执行者通道
  • 范围通道

针对 5 年以上经验的 Spring MVC 面试问题

51)为什么Spring优先采用声明式事务管理?

声明式事务管理对应用程序代码的影响最小,因此是一种理想的轻量级容器。


52)解释一下 BeanFactory 的概念?

BeanFactory 应用工厂模式的思想,利用 IOC 将应用程序的依赖项和配置与实际代码分离。


53)Spring bean 有哪些不同的作用域?

spring bean的作用域有Singleton,prototype,request,session,global session。


54) 使用 Spring 访问 Hibernate 有哪些方法?

使用spring访问hibernate有两种方式:

  • 使用 Hibernate 模板和回调进行控制反转
  • 扩展 HibernateDAOSupport 并应用 AOP Interceptor 节点。

55) struts 应用程序如何与 spring 集成?

struts应用程序可以与spring集成有两种方案:

配置 Spring,使用 ContextLoader 插件管理 bean,并在 spring 上下文文件中设置它们的依赖关系

使用以下方式显式获取 spring 管理的 bean agetwebapplicationcontext()


56)什么是控制反转(IOC)?

控制反转(IOC)也称为依赖注入,它是一种将控制权交给类的组装者的设计模式。一般来说,如果需要,类将实例化另一个类。

但是在这种设计模式中,这种控制权已经交给了汇编器,如果需要,汇编器将实例化所需的类。


57)写出使用 IOC 的好处?

依赖注入或 IOC 的主要优点是它减少了应用程序所需的编码量。由于不需要 JNDI 查找机制或单例,因此可以快速轻松地完成应用程序测试。IOC 容器还支持服务的延迟加载和即时安装。


58)什么是 Inner bean?Inner bean 的缺点是什么?

如果在装配 bean 时直接将 bean 元素嵌入 property 标签中,则该 bean 称为 Inner Bean。它的缺点是无法重新处理。


59)Spring中有哪些不同类型的注入?

spring中注入的类型有三种:

  • 二传手注射
  • 构造函数注入
  • Getter 或方法注入

60)Spring框架有什么好处?

以下是 Spring 框架的优点:

  • 与 j2EE 容器相比,重量级容器
  • 内置 Web MVC 框架
  • 创建松散耦合的应用程序
  • 支持面向方面的编程,如日志记录、事务和安全
  • 采用 XML 格式进行配置,易于编写和理解

61)建议的类型有哪些?

有五种类型的建议:

  • 之前建议
  • 返回建议之后
  • 抛出建议后
  • 最后建议
  • 围绕建议

62)什么叫 PreparedStatementCreator?

准备声明Creator 是将数据写入数据库的最常用接口之一。createPreparedStatement() 是一种可用于从 Connection 参数创建和返回 PreparedStatement 的方法,并且会自动处理异常。实现此接口时,还可以实现另一个接口 SqlProvider,该接口具有名为 getSql() 的方法。此方法可用于向 JdbcTemplate 提供 sql 字符串。它不处理 SQLException。


63)什么是 SQLProvider?

SQLProvider 只有一个方法,名为 getSql() 它是使用 PreparedStatement 实现的Creator 实现者。主要用于调试。


64)写一下BatchPreparedStatementSetter?

BatchPreparedStatementSetter 用于一次性更新多行,可以使用 BatchPreparedStatementSetter。此接口提供了两种方法,它们是

  • setValues(PreparedStatement ps, int i) 抛出 SOL 异常
  • 获取批次大小

65)在 Spring 中使用 JDBC 的更好方法是什么?

如果 JDBC 与名为 JdbcTemplate 的模板类一起使用,则会提供更好的性能。


66) Spring 中使用的 DAO 类会抛出哪些异常?

在 spring 中 DAO 类仅抛出 SQLException。


67)解释使用 DAO 模块的优点?

通过使用 DAO 模块,数据库代码可以保持简洁。这有助于防止由于数据库资源闭包处理不当而引起的问题。此外,DAO 模块利用 AOP 模块使 Spring 应用程序中的对象能够使用事务管理服务。


68) 说出 Spring 框架中使用的重要的 ApplicationContext 实现?

它们分别是:

  • ClassPathXmlApplicationContext
  • 文件系统Xml应用程序上下文
  • XmlWebApplicationContext

69) 如何将 bean 添加到 Spring 应用程序中?

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN">

<beans>

<bean id="foo"/>

<bean id="bar"/>

</beans>

bean标签有一个ID属性,用于存储bean的名称,还有一个class属性,用于指定完整的类名。

70)什么是 ORM 集成模块?

Spring 通过实现 ORM 模块,通过直接 JDBC 支持对象/关系映射 (ORM) 工具。Spring 可以加入各种重要的 ORM 框架,包括 JDO、iBATIS SQL Maps 和 Hibernate。


71)提及并解释 Spring 中的 Advice 类型?

建议类型包括:

  • 之前的建议: 在连接点之前执行的建议称为“之前建议”。
  • 返回建议后: 连接点正常完成后执行的建议称为“返回后建议”。
  • 抛出建议后: 仅当方法抛出异常而异常退出时才执行的建议称为“抛出后建议”。
  • 最终建议之后: 无论连接点如何退出都会执行的建议称为“最终建议之后”。
  • 周围建议: 与连接点相邻的建议(例如方法调用)称为“环绕建议”。这可用于在方法调用之前和之后执行特殊活动。

72)什么是 Web 模块?

Web 模块支持创建不带 XML 的 Web 应用程序。需要配置 web.xml 文件才能使用 Web 模块。


73)什么是 DataAccessException?

DataAccessException 是 RuntimeException。它是 Unchecked Exception。不能强迫用户处理此类异常。


74)什么是 XMLBeanFactory?

Spring 包含几个 Bean 工厂应用程序。其中,org.springframework.beans.factory.xml.XmlBeanFactory 非常重要。它根据存储在 XML 文件中的定义加载 bean。为了创建 XmlBeanFactory,将 java.io.InputStream 传递给构造函数。InputStream 向工厂提供 XML。例如,为了检索 bean,通过传递所需 bean 的名称来调用 getBean() 方法。

MyBean helloBean = (MyBean) factory.getBean("helloBean");

75) 说出与应用程序抛出的异常相关的 Exception 类的名称?

这是 org.springframework.dao.DataAccessException 给出的 DataAccessException


76)请提及 lOC(依赖注入)的类型?

不同类型的 loC 包括:–

  • 二传手注射: 的帮助下 JavaBean 的属性。
  • 构造函数注入: 依赖关系以构造函数参数的形式给出。
  • 接口注入: 通过接口的帮助,可以进行注入。

在这三者中,只有构造函数和 setter 在 Spring 中使用。


77) Bean 的生命周期中有哪些重要的方法?

总的来说,bean 的生命周期方法有两种。第一种方法是 setup 方法,在将 bean 加载到容器中时调用。第二种方法是在 bean 从容器中卸载时调用,这种方法称为 trashdown。


78) 如何使 bean 的默认生命周期方法无效?

标签 bean 有两个有用的属性,可用于定义特殊的初始化和销毁​​方法。

例如,可以按以下方式向 Foo 类添加两个新方法 forSetup 和 forTeardown:

<beans>

<bean id="bar" init-method="forSetup" destroy="forTeardown"/>

</beans>

79)什么是 Target?

目标是被建议的类。这个类可以是我们想要添加特殊行为的类,也可以是第三方类。目标类可以自由地使用 AOP 概念集中关注其主要关注点,而不管正在应用什么建议。


80)解释“代理”一词?

代理这个术语指的是将建议应用于目标对象而产生的对象。


81)Spring AOP 中的横切关注点和关注点是什么?

  • 跨切关注点: 这是贯穿整个应用程序的关注点,它会影响整个应用程序。例如,安全性、日志记录和数据传输是应用程序几乎每个模块都需要关注的关注点。
  • 关心: 关注点是我们希望在应用程序模块中拥有的行为。我们感兴趣的问题定义了我们的关注点。

这些面试问题也会对你的口试有帮助