Spring常见面试题

本文详述了Spring框架的核心特性,包括IOC、AOP的原理,以及SpringBean的生命周期。重点讨论了SpringBoot、SpringMVC的区别,ApplicationContext与BeanFactory的差异,和Spring事务管理的相关知识。同时,阐述了Spring支持的bean作用域和自动装配机制,并解释了SpringBoot自动配置与Starter的原理。最后,介绍了嵌入式服务器的概念及其在简化部署中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


总结了目前主流平台中常见的面试题,标⭐为重点!

Cyberpunk


⭐Spring是什么

轻量级的开源的J2EE框架。它是一个容器框架,用来装javabean (java对象),中间层框架(万能胶)可以起一个连接作用,比如说把Struts和hibernate粘合在一起运用,可以让我们的企业开发更快、更简洁
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架

  • 从大小与开销两方面而言Spring都是轻量级的。
  • 通过控制反转(loC)的技术达到松耦合的目的
  • 提供了面向切面(AOP)编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
  • 包含并管理应用对象(Bean)的配置和生命周期,这个意义上是一个容器
  • 将简单的组件配置、组合成为复杂的应用,这个意义上是一个框架

通过分离应用的业务逻辑与系统级服务进行内聚性的开发 ?

  • 比如写日志:如果没有使用aop,那么日志会分散在业务代码的四处,使用aop可以采用一个专门写日志的切面,让切面自动的打印日志

对AOP的理解

在这里插入图片描述


⭐对IOC的理解

容器概念、控制反转、依赖注入

控制反转:原本A依赖B是在A中直接创建B,而现在是IOC将B主动注入到A。

在这里插入图片描述在这里插入图片描述


⭐如何实现IOC容器

  1. 配置文件配置包扫描路径
  2. 递归包扫描获取.class文件
  3. 反射,确定需要交给IoC管理的类
  4. 对需要注入的类进行依赖注入

更详细的说法在这里插入图片描述


SpringBoot、SpringMVC、Spring的区别

在这里插入图片描述


⭐⭐ApplicationContext和BeanFactory的区别

  • 都是bean工厂,bean容器
  • Beanfactory是Spring中非常核心的组件,表示Bean工厂,可以生成Bean,维护Bean,而ApplicationContext继承了BeanFactory,所以AplicationContext拥有BeanFactory所有的特点,也是一个Bean工厂,但是ApplicationContext除开继承了Beanfactory之外,还继承了诸如EnvironmentCapable、MessageSource、ApplicationEventPublisher等接口,从而ApplicationContext还有获取系统环境变量、国际化、事件发布等功能,这是BeanFactory所不具备的、

源码在这里插入图片描述

  • 面试回答:
    ApplicationContext是BeanFactory的子接口
    ApplicationContext提供了更完整的功能:
    ①继承Messagesource,因此支持国际化。
    ②统一的资源文件访问方式。
    ③提供在监听器中注册bean的事件。
    ④同时加载多个配置文件。
    ⑤载入多个(有继承关系)上下文,使得每一个上下文都专注于一个特定的层次,比如应用的web层。

扩展在这里插入图片描述


⭐⭐⭐SpringBean的生命周期

  1. 解析类得到BeanDefinition
  2. 如果有多个构造方法,则要推断构造方法
  3. 确定好构造方法后,进行实例化得到一个对象
  4. 对对象中的加了@Autowired注解的属性进行属性填充
  5. 回调Aware方法,比如BeanNameAware,BeanFactoryAware
  6. 调用BeanPostProcessor的初始化前的方法
  7. 调用初始化方法
  8. 调用BeanPostProcessor的初始化后的方法,在这里会进行AOP
  9. 如果当前创建的bean是单例的则会把bean放入单例池
  10. 使用bean
  11. Spring容器关闭时调用DisposableBean中destory()方法

⭐⭐解释下Spring支持的几种bean的作用域

在这里插入图片描述


⭐⭐Spring框架中的单例bean是线程安全的吗?

不是线程安全的

在这里插入图片描述


⭐⭐Spring框架中都用到了哪些设计模式

在这里插入图片描述在这里插入图片描述在这里插入图片描述


⭐Spring事务的实现方式和原理以及隔离级别

在这里插入图片描述
在这里插入图片描述


⭐Spring事务传播机制

在这里插入图片描述
在这里插入图片描述


⭐Spring什么时候会失效

在这里插入图片描述


⭐⭐什么是bean的自动装配,有哪些方式

在这里插入图片描述
在这里插入图片描述


⭐⭐SpringMVC的工作流程

在这里插入图片描述


⭐SpringMVC的主要组件

  • 最核心的是HandlerMapping、HandlerAdapter,这俩都是接口
    因为ViewResolver(视图解析器)用于jsp,但现在前后端分离所以不是很重要

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述


⭐⭐SpringBoot自动配置原理

在这里插入图片描述


⭐⭐如何理解SpringBoot的Starter

  • 使用spring + springmvc使用,如果需要引入mybatis等框架,需要到xml中定义mybatis需要的bean
  • starter就是定义一个starter的jar包写一个@Configuration配置类、将这些bean定义在里面,然后在starter包的META-INF/spring.factories中写入该配置类,springboot会按照约定来加载该配置类
  • 开发人员只需要将相应的starter包依赖进应用,进行相应的属性配置(使用默认配置时,不需要配置),就可以直接进行代码开发,使用对应的功能了,比如mybatis-spring-boot–starter,spring-boot-starter-redis

什么是嵌入式服务器,为什么要使用嵌入式服务器

拿tomcat举例:

  • 节省了下载安装tomcat,应用也不需要再打war包,然后放到webapp目录下再运行
  • 只需要一个安装了Java的虚拟机,就可以直接在上面部署应用程序了
  • springboot已经内置了tomcat.jar,运行main方法时会去启动tomcat,并利用tomcat的spi机制加载springmvc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值