Spring常见面试题(2026版30道面试题)

目录

1、什么是Spring框架?

2、什么是依赖注入(DI)?

[3、Spring Bean是什么?](#3、Spring Bean是什么?)

4、@Autowired注解的作用是什么?

5、Spring中的Bean作用域有哪些?

6、如何在Spring中配置事务管理?

[7、什么是Spring AOP?](#7、什么是Spring AOP?)

8、@Component注解的作用是什么?

9、什么是Spring的核心模块?

10、如何在Spring中定义Bean的初始化和销毁方法?

11、如何在Spring中处理异常?

[12、什么是Spring RestTemplate?](#12、什么是Spring RestTemplate?)

13、如何在Spring中实现文件上传?

14、如何在Spring中使用缓存?

[15、Spring Bean的生命周期是什么?](#15、Spring Bean的生命周期是什么?)

16、Spring管理Bean的注解?

17、Spring管理Bean的那四个注解可以混用吗?

18、Spring给属性注入值的注解

19、AOP术语

20、AOP相关注解

21、事务的四个特性

22、事务并发执行时出现的三个问题?

23、事务的隔离级别?

24、Spring管理Bean的方式?

[25、什么是 Spring IoC 容器?它有哪些类型?](#25、什么是 Spring IoC 容器?它有哪些类型?)

[26、什么是 Spring 事务管理?如何实现事务管理?](#26、什么是 Spring 事务管理?如何实现事务管理?)

[27、如何在 Spring 中处理跨域请求(CORS)?](#27、如何在 Spring 中处理跨域请求(CORS)?)

[28、什么是 Spring 的 Profile?如何使用它?](#28、什么是 Spring 的 Profile?如何使用它?)

[29、解释 Spring 中的依赖注入方式及其区别?](#29、解释 Spring 中的依赖注入方式及其区别?)

[30、spring 中通知方式有哪些?](#30、spring 中通知方式有哪些?)


1、什么是Spring框架?

Spring是一个开源的Java平台,提供全面的基础设施支持,简化了Java企业级应用的开发。它的核心特性包括控制反转(IOC)和面向切面的编程(AOP)。

2、什么是依赖注入(DI)?

依赖注入是一种设计模式,它允许对象通过构造函数、setter方法或接口来获取它们的依赖对象,而不是在内部自己创建它们。

3、Spring Bean是什么?

Spring Bean是由Spring IOC容器管理的一个对象。Bean由容器实例化、配置和组装。

4、@Autowired注解的作用是什么?

@Autowire用于自动装配Spring Bean。

Spring会自动在应用上下文中查找和注入与属性类型匹配的Bean。

5、Spring中的Bean作用域有哪些?

Spring支持五种Bean作用域:singleton、prototype、request、session和global-session。

6、如何在Spring中配置事务管理?

可以使用@Transactional注解配置事务管理。

它可以应用在类或方法上,Spring会自动管理这些方法的事务。

7、什么是Spring AOP?

Spring AOP(面向切面的编程)允许你通过分离关注点(如日志记录、事务管理)来更好地管理横切关注点。它使用动态代理或CGLIB生成AOP代理对象。

8、@Component注解的作用是什么?

@Component是一个通用的Spring Bean注解,用于将类标识为Spring管理的组件。其它特定类型的注解包括@Controller、@Service和@Repository。

9、什么是Spring的核心模块?

Spring的核心模块包括:Spring Core、Spring AOP、Spring ORM、Spring Web、Spring Security等。

10、如何在Spring中定义Bean的初始化和销毁方法?

可以使用@Bean注解的initMethod和destroyMethod属性,或在Bean类中定义@PostConstruct和@PreDestroy注解的方法。

11、如何在Spring中处理异常?

可以使用@ControllerAdvice和@ExceptionHandler注解来处理全局异常和特定控制器异常。

12、什么是Spring RestTemplate?

RestTemplate是Spring提供的一个同步客户端,用于简化与RESTful服务的交互。它提供了多种便捷的方法来执行HTTP请求和处理响应。

13、如何在Spring中实现文件上传?

可以使用Spring MVC的MultipartFile接口来处理文件上传。需要在配置中启用multipart支持,并在控制器中使用MultipartFile接收上传的文件。

14、如何在Spring中使用缓存?

可以使用Spring Cache抽象和@Cacheable、@CachePut、@CacheEvict等注解来简化缓存的使用。需要配置缓存管理器和缓存提供者(如EhCache、Hazelcast)。

15、Spring Bean的生命周期是什么?

1.Bean的实例化

2.属性注入

3.初始化

4.销毁

16、Spring管理Bean的注解?

1、@Component

● 标识普通组件

2、@Repository

● 标识持久层的组件

3、@Service

● 标识业务逻辑层组件

4、@Controller

● 标识控制器层组件

5、@Bean

● 添加到方法上将方法返回的对象放入IOC容器

17、Spring管理Bean的那四个注解可以混用吗?

● 从让Spring帮我们创建对象层面考虑,四个注解可以混用,但是不建议这样,还是建议按照规定的来

● 如果是控制器层的组件必须加@Controller注解,不能加其他的

18、Spring给属性注入值的注解

1、@Autowired

● 注入IOC容器中其他类型的Bean

2、@Value

● 注入字面量值

3、@Resource

● JDK提供的

4、@Inject

● 根据类型注入

19、AOP术语

● 横切关注点

被抽离之前的同一类的非核心代码

● 切面

横切关注点抽离出来之后所在的类

● 通知

横切关注点抽离之后所在的方法

● 连接点

横切关注点被抽离之前所在方法的位置

● 切入点

获取连接点的表达式

● 目标对象

被代理的对象

● 代理对象

20、AOP相关注解

● @Aspect

● 声明一个类是切面

● @Before

● 声明前置通知

● @After

● 声明后置通知

● @AfterReturning

● 声明返回通知

● @AfterThrowing

● 声明异常通知

● @Around

● 声明环绕通知

● @Pointcut

● 声明切入点表达式

● @Order

● 声明切面的优先级

21、事务的四个特性

原子性、一致性、隔离性、持久性

22、事务并发执行时出现的三个问题?

脏读、不可重复读、幻读

23、事务的隔离级别?

按隔离强度由低到高:

● 读未提交(READ_UNCOMMITED)

● 脏读、不可重读读、幻读都会出现

● 读已提交(READ_COMMITED)

● 可以避免脏读,不可重复读和幻读仍然出现

● 可重复读(REPEATABLE_READ)

● 可以批量脏读和不可重复读,幻读仍会出现

● 将操作的数据上了锁

● MySQL默认的隔离级别

● 串行化(SERIALIZABLE)

● 脏读、不可重复读和幻读都可以避免

● 将表上锁

● 隔离级别不是越高越好,隔离级别越高越不利于并发

24、Spring管理Bean的方式?

1、纯XML方式

● 在Spring的配置文件中使用bean标签配置

2、XML+注解的方式

● 在Spring的配置文件中配置自动扫描的包

● 在我们创建的类上添加Spring提供的管理Bean的注解

3、配置类+注解的方式

● 在类上添加@Configuration注解声明一个类是配置类

● 在类中创建方法并在方法上添加@Bean注解

4、完全注解开发

● 在SpringBoot环境下实现

25、什么是 Spring IoC 容器?它有哪些类型?

Spring IoC (Inversion of Control) 容器负责管理对象的生命周期和依赖注入。

BeanFactory:基本的 IoC 容器,提供基础的依赖注入功能。

ApplicationContext:继承自 BeanFactory,提供更多企业级功能,如事件传播、声明式机制、国际化等。

26、什么是 Spring 事务管理?如何实现事务管理?

Spring 事务管理用于简化数据库事务的管理。对数据库事务的抽象封装,提供声明式和编程式两种管理方式。

可以通过以下两种方式实现事务管理:

编程式事务管理:使用 TransactionTemplate 或 PlatformTransactionManager。

声明式事务管理:使用 @Transactional 注解。

27、如何在 Spring 中处理跨域请求(CORS)?

可以通过以下方式在 Spring 中处理跨域请求:

使用 @CrossOrigin 注解在控制器或方法上允许跨域请求。

在配置类中实现 WebMvcConfigurer 接口,并重写 addCorsMappings 方法进行全局配置。

28、什么是 Spring 的 Profile?如何使用它?

Spring Profile 用于在不同的环境中启用和禁用特定的配置。使用步骤:

在配置文件中使用 @Profile 注解标记 bean 或配置类。

在应用程序启动时,通过 spring.profiles.active 属性指定激活的 profile。

29、解释 Spring 中的依赖注入方式及其区别?

Spring 提供三种依赖注入方式:

构造器注入:通过构造器参数注入依赖,适用于强制依赖。

Setter 注入:通过 setter 方法注入依赖,适用于可选依赖。

字段注入:通过反射直接注入字段,简化代码,但不推荐使用。

30、spring 中通知方式有哪些?

前置通知(Before Advice):在目标方法执行之前执行

后置通知(After Advice):在目标方法执行之后执行,不管方法是否成功完成

返回通知(After Returning Advice):在目标方法成功执行之后执行

异常通知(After Throwing Advice):在目标方法抛出异常后执行

环绕通知(Around Advice):在目标方法执行前后都执行,可以完全控制目标方法的执行。

相关推荐
杨杨杨大侠2 小时前
DeepAgents 框架深度解析:从理论到实践的智能代理架构
后端·python·llm
温暖小土2 小时前
深入理解 Spring Boot 配置加载顺序:外部化配置的艺术
java·springboot
小林rr2 小时前
深入探索 C++:现代特性、工程实践与性能优化全解
java·c++·性能优化
阿祖zu2 小时前
2025 AI 总结:技术研发的技能升维与职业路径系统重构的思考
前端·后端·ai编程
IT_陈寒2 小时前
Vite 5分钟性能优化实战:从3秒到300ms的冷启动提速技巧(附可复用配置)
前端·人工智能·后端
心在飞扬2 小时前
langchain学习总结-Embedding 学习总结
后端
羊小猪~~2 小时前
【QT】-- QT基础类
开发语言·c++·后端·stm32·单片机·qt
专注数据的痴汉2 小时前
「数据获取」全国民用运输机场吞吐量排名(2006-2024)
java·大数据·服务器·数据库·信息可视化
陈随易2 小时前
Vue-Router v5内置文件式路由,告别手写维护的恐惧
前端·后端·程序员