Spring 面试题及答案

2025年3月16日 | 6分钟阅读

Spring 面试题及答案之所以经常被问到,是因为它现在是开发 Java 企业应用程序的广泛使用的框架。这里列出了 40 个最常问的 Spring 面试题。


1) Spring 是什么?

它是一个用于开发 Java 企业应用程序的轻量级、松耦合且集成的框架。


2) Spring 框架的优点是什么?

  1. 预定义模板
  2. 松散耦合
  3. 易于测试
  4. 轻量级
  5. 快速开发
  6. 强大的抽象
  7. 声明式支持
更多详情...

3) Spring 框架包含哪些模块?

  1. 测试
  2. Spring 核心容器
  3. AOP、Aspects 和 Instrumentation
  4. 数据访问/集成
  5. Web
更多详情...

4) 什么是 IOC 和 DI?

IOC(控制反转)和 DI(依赖注入)是一种提供松耦合的设计模式。它消除了程序中的依赖关系。

让我们写一个不遵循 IOC 和 DI 的代码。

现在,Employee 和 Address 之间存在依赖关系,因为 Employee 被强制使用同一个 address 实例。

让我们编写 IOC 或 DI 代码。

现在,Employee 和 Address 之间没有依赖关系,因为 Employee 没有被强制使用同一个 address 实例。它可以是任何 address 实例。


5) IOC 容器在 Spring 中的作用是什么?

IOC 容器负责

  • 创建实例
  • 配置实例,以及
  • 组装依赖项
更多详情...

6) Spring 中 IOC 容器的类型有哪些?

Spring 框架中有两种类型的 IOC 容器。

  1. BeanFactory
  2. ApplicationContext
更多详情...

7) BeanFactory 和 ApplicationContext 有什么区别?

BeanFactory 是基本容器,而 ApplicationContext 是高级容器。ApplicationContext 扩展了 BeanFactory 接口。ApplicationContext 提供了比 BeanFactory 更多的功能,例如与 Spring AOP 的集成、用于 i18n 的消息资源处理等。


8) 构造函数注入和 Setter 注入有什么区别?

编号。构造器注入Setter 注入
1)无部分注入部分注入
2)不覆盖 Setter 属性如果两者都定义,则覆盖构造函数属性。
3)如果发生任何修改,则创建新实例如果您更改属性值,则不创建新实例
4)更适合大量属性更适合少量属性。
更多详情...

9) Spring 中的自动装配是什么?自动装配模式有哪些?

自动装配使程序员能够自动注入 Bean。我们不需要编写显式的注入逻辑。

让我们看看使用依赖注入的代码来注入 Bean。

自动装配模式如下

编号。众数描述
1)这是默认模式,意味着自动装配未启用。
2)byName根据属性名称注入 Bean。它使用 Setter 方法。
3)byType根据属性类型注入 Bean。它使用 Setter 方法。
4)构造函数它使用构造函数注入 Bean

"autodetect" 模式自 Spring 3 起已弃用。


10) Spring 中有哪些 Bean 作用域?

Spring 框架中有 5 种 Bean 作用域。

编号。范围描述
1)singletonBean 实例只创建一次,IOC 容器会返回相同的实例。这是默认作用域。
2)原型每次请求时都会创建 Bean 实例。
3)请求Bean 实例将为每个 HTTP 请求创建。
4)sessionBean 实例将为每个 HTTP Session 创建。
5)globalsessionBean 实例将为每个 HTTP 全局 Session 创建。它只能在 Portlet 上下文中使用。

11) 在什么情况下,您将使用 Singleton 和 Prototype 作用域?

Singleton 作用域应与 EJB 的无状态会话 Bean 一起使用,而 Prototype 作用域应与 EJB 的有状态会话 Bean 一起使用。


12) Spring 提供了哪些事务管理支持?

Spring 框架提供两种事务管理支持

  1. 编程式事务管理:应少量事务操作使用。
  2. 声明式事务管理:应大量事务操作使用。

» Spring JDBC 面试题


13) JdbcTemplate 在 Spring 中的优点是什么?

代码量少:通过使用 JdbcTemplate 类,您无需创建连接、语句、启动事务、提交事务和关闭连接来执行不同的查询。您可以直接执行查询。

更多详情...

14) Spring JDBC API 有哪些类?

  1. JdbcTemplate
  2. SimpleJdbcTemplate
  3. NamedParameterJdbcTemplate
  4. SimpleJdbcInsert
  5. SimpleJdbcCall
更多详情...

15) 如何使用 Spring JdbcTemplate 获取记录?

您可以通过 JdbcTemplate 的 query 方法从数据库中获取记录。有两种接口可以做到这一点

  1. ResultSetExtractor
  2. RowMapper

16) NamedParameterJdbcTemplate 有什么优点?

NamedParameterJdbcTemplate 类用于将值传递给命名参数。命名参数比 ?(PreparedStatement 的问号)更好。

更容易记住

更多详情...

17) SimpleJdbcTemplate 有什么优点?

SimpleJdbcTemplate 支持可变参数和自动装箱的功能。

更多详情...

» Spring AOP 面试题


18) AOP 是什么?

AOP 是 Aspect Oriented Programming 的缩写。它是一种将程序逻辑划分为片段、部分或关注点的范例。

它增加了模块化,关键单元是 Aspect(方面)。

更多详情...

19) Spring AOP 的优点是什么?

AOP 使您能够在业务逻辑之前或之后动态添加或删除关注点。它是可插拔的,并且易于维护

更多详情...

20) AOP 的术语有哪些?

AOP 的术语或概念如下

  • JoinPoint(连接点)
  • Advice
  • Pointcut(切入点)
  • 方面
  • 引言
  • Target Object(目标对象)
  • 拦截器
  • AOP Proxy(AOP 代理)
  • 编织
更多详情...

21) JoinPoint 是什么?

JoinPoint 是程序中的任何一个点,例如字段访问、方法执行、异常处理等。


22) Spring 框架支持所有 JoinPoint 吗?

不,Spring 框架仅支持方法执行 joinpoint。


23) Advice 是什么?

Advice 代表方面所采取的操作。


24) AOP 中有哪些类型的 advice?

Spring AOP 中有 5 种 advice。

  1. Before Advice(前置通知)
  2. After Advice(后置通知)
  3. After Returning Advice
  4. Throws Advice(异常通知)
  5. Around Advice(环绕通知)

25) Pointcut 是什么?

Pointcut 是 Spring AOP 的表达式语言。


26) Aspect 是什么?

Aspect 是 Spring AOP 中的一个类,其中包含 advice 和 joinpoints。


27) Introduction 是什么?

Introduction 代表为类型引入新的字段和方法。


28) Target object 是什么?

Target Object 是一个被一个或多个方面通知的代理对象。


29) Interceptor 是什么?

Interceptor 是一个像 aspect 的类,它只包含一个 advice。


30) Weaving 是什么?

Weaving 是将 aspect 与其他应用程序链接的过程。


31) Spring 是否在编译时执行 weaving?

不,Spring 框架在运行时执行 weaving。


32) AOP 有哪些实现?

有 3 种 AOP 实现。

  1. Spring AOP
  2. Apache AspectJ
  3. JBoss AOP

» Spring MVC 面试题


33) Spring MVC 的前端控制器类是什么?

DispatcherServlet 类在 Spring MVC 中充当前端控制器。

更多详情...

34) @Controller 注解是什么意思?

@Controller 注解将类标记为控制器类。它应用于类。


35) @RequestMapping 注解是什么意思?

@RequestMapping 注解将请求映射到方法。它应用于方法。


36) ViewResolver 类是做什么的?

View Resolver 类解析要为请求调用的视图组件。它定义了前缀和后缀属性来解析视图组件。


37) 哪个 ViewResolver 类被广泛使用?

org.springframework.web.servlet.view.InternalResourceViewResolver 类被广泛使用。


38) Spring MVC 是否提供验证支持?

是。

 

其他面试题