面试篇-揭开Spring Bean加载的神秘面纱

news2024/11/16 23:42:02

SpringBean加载完整过程

 

启动spring容器(创建beanfactory)->加载配置(注解、xml)->实例化bean(执行构造方法)->注入依赖->初始化bean(设置属性值)->使用->销毁

  1. 解析和读取 XML 配置文件或注解配置类,获取 Bean 定义信息。
  2. 根据 Bean 定义信息实例化 Bean 对象。根据不同的作用域(如 singleton、prototype 等),Spring 会采用相应的方式来创建 Bean 对象。
  3. 注入 Bean 的依赖关系。Spring 会检查 Bean 定义信息中所声明的属性或构造函数参数,并将对应的依赖对象注入到 Bean 中。
  4. 执行 Bean 的初始化操作。Spring 提供了多种方式来进行 Bean 的初始化,包括 InitializingBean 接口、@PostConstruct 注解、配置文件中的 init-method 等。
  5. 将 Bean 注册到 Spring 容器中,完成加载过程。

需要注意的是,Spring Bean 加载过程中还涉及到很多细节和扩展点,如 Bean 的后置处理器、AOP、条件装配等,这些内容可以进一步深入学习。

Spring Bean相关面试题

  1. Spring Bean 的加载过程包括哪些步骤?

答:Spring Bean 的加载过程主要包括解析和读取配置文件、实例化 Bean 对象、注入依赖关系、初始化 Bean 和使用、销毁等步骤。

  1. BeanFactory 和 ApplicationContext 有什么区别?它们在 Bean 加载过程中有何不同?

答:BeanFactory 是 Spring 容器中最基本的接口,提供了最简单的容器服务,仅支持延迟初始化。ApplicationContext 是 BeanFactory 的子接口,增加了更多的企业级功能,如事件发布、国际化消息处理等,并且预先实例化单例 Bean。

  1. Spring Bean 生命周期包括哪些阶段?如何在 Bean 生命周期的不同阶段进行操作?

答:Spring Bean 生命周期包括实例化、依赖注入、初始化、销毁等阶段,可以通过继承 InitializingBean 和 DisposableBean 接口、使用 @PostConstruct 和 @PreDestroy 注解、配置 XML 中的 init-method 和 destroy-method 方法来在 Bean 生命周期的不同阶段进行操作。

  1. Spring Bean 的作用域有哪些?它们在 Bean 加载和使用过程中有何不同?

答:Spring Bean 的作用域包括 singleton、prototype、request、session 和 global session 等,它们在 Bean 加载和使用过程中的主要区别在于是否共享 Bean 实例、生命周期长度及作用域范围。

  1. Spring 如何解决循环依赖问题?涉及哪些机制或实现原理?

答:Spring 通过提前暴露对象的实例化中介来解决循环依赖问题,主要涉及一级缓存和二级缓存机制以及后置处理器等实现原理。

  1. Spring 如何支持注解配置 Bean?常用的注解有哪些?

答:Spring 支持使用 @ComponentScan、@Configuration、@Bean、@Autowired 等注解进行 Bean 的自动扫描、注入和配置等操作。常用的注解还包括 @Service、@Controller、@Repository、@Qualifier 等。

  1. Spring 在 Bean 加载过程中如何进行属性注入?可以通过哪些方式来注入属性?

答:Spring 可以通过构造函数注入、setter 方法注入、字段注入、方法注入等方式来进行属性注入。可以使用 @Autowired、@Value 注解等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux嵌入式学习之Ubuntu入门(五)汇编语法学习

系列文章目录 一、Linux嵌入式学习之Ubuntu入门(一)基本命令、软件安装及文件结构 二、Linux嵌入式学习之Ubuntu入门(二)磁盘文件介绍及分区、格式化等 三、Linux嵌入式学习之Ubuntu入门(三)用户、用户组…

synchronized原理、偏向锁、轻量级锁、重量级锁、锁升级

文章目录Synchronized概念自增自减字节码指令临界区竞态条件基本使用原理查看synchronized的字节码指令序列Monitor对象的内存布局Mark Word是如何记录锁状态的偏向锁什么是偏向锁偏向锁延迟偏向偏向锁状态跟踪偏向锁撤销之调用对象HashCode偏向锁撤销之调用wait/notify轻量级锁…

Qt Quick - Drawer

Qt Quick - Drawer使用总结一、概述二、使用1、基础使用2、特点空间运行3、与内容转换相互挤占一、概述 Drawer提供了一个基于滑动的侧边面板,类似于经常在触控界面中使用的侧边面板,为导航提供了一个位置。 二、使用 1、基础使用 抽屉可以放置在内…

springcloud深度探索

中文官方文档:project - Spring Cloud Config - 《Spring Cloud中文文档》 - 书栈网 BookStackSpring Cloud ConfigFeaturesQuick StartSample Projects Spring Cloud为开发人员提供了工具,用以快速的在分布式系统中建立一些通用方案(例如配…

CDP思科发现协议解析及C/C++代码实现

通常,大多数网络都有几个路由器或交换机,为了便于网络管理,使用网络图或网络图来告诉网络中存在什么类型的设备,以及所有设备如何相互连接,使用的IP地址以及它们属于哪个VLAN的信息。 CDP是一种专有的第二层思科网络协…

Table Transformer做表格检测和识别实践

计算机视觉方面的三大顶级会议:ICCV,CVPR,ECCV.统称ICE CVPR 2022文档图像分析与识别相关论文26篇汇集简介 论文: PubTables-1M: Towards comprehensive table extraction from unstructured documents是发表于CVPR上的一篇论文 作者发布了两个模型&…

22级ACM 4.16 周赛 题解

这场能题解写的感觉没多少其实(真的不是因为懒),既然有人想要题解,那么就随便写一下吧,其实大部分的题都有人写出来,感觉这场真的不需要。 A 题 题解 Count Interval AtCoder - abc233_d_霾まる的博客-CS…

AI绘画王炸功能Control Net安装教程

原文:AI绘画王炸功能Control Net安装教程 - 知乎 AI绘画,最近两大王炸功能出圈了。 一个就是超真实超细节的美女图片,已经快和照片无异了,甚至有人用AI绘画的“女仆照片”开始招募游艇会了,具体教程可以查看Lora这篇…

一键生成元宇宙 AI又杀疯了

人类十几年的进步水平,AI用几个月就能轻易实现。在展示了超强的文本对话能力和一键生图功能后,AI大模型不打算停下,开始挑战搭建3D空间这一更高难度的动作。 这次,Facebook母公司Meta想当一把主导者。几天前,它的首席…

185-二35

Java185-二35单列集合顶层接口collection迭代器增强forlambda表达式list特有方法遍历数据结构数组Linkedlist集合泛型类,泛型方法,泛型结构泛型方法泛型的通配符泛型总结数据结构数据结构(二叉树)前序遍历数据结构(二叉…

crm系统有哪些?具体的功能有哪些?

市面上的CRM系统有很多,例如简道云、销售易、salesforce、纷享销客、SugarCRM等等,这些都是比较知名的,前面也有写过很多关于CRM选型的内容,大家可以点进我的主页翻阅一下。 那么,CRM具体的功能有哪些?下面…

计算机网络 - UDP协议 与 TCP协议可靠性(传输层)

前言 本篇介绍UDP报文格式,认识UDP报文,介绍TCP报文格式,了解TCP可靠性的核心机制,TCP通信中三次握手与四次挥手;如有错误,请在评论区指正,让我们一起交流,共同进步! 文…

EDA基础概念

EDA基础概念EDA和CADCAD工具EDA工具EDA技术实现目标可编程逻辑器件简称PLD发展历程FPGA简介CPLD简介FPGA和CPLD区别是否需要同时学习FPGA和CPLDXilinx(赛灵思)公司介绍(AMD收购)开发工具Xilinx产品Altera(阿尔特拉&…

Qt关于QPainter绘制1px宽度图形带来的问题思考

前言 前段时间遇到这样一个问题,使用QPainter绘制直线的时候,设置了笔宽为1像素,但是绘制出来的线条却是2px宽度,而且设置的画笔颜色很明显是降低了透明度,不是最“纯正”的颜色。 当时就感觉非常奇怪,明明…

【FPGA实验1】FPGA点灯工程师养成记

对于FPGA几个与LED相关的实验(包括按键点灯、流水灯、呼吸灯等)的记录,方便日后查看。这世界上就又多了一个FPGA点灯工程师了😏 成为一个FPGA点灯工程师分三步:一、按键点灯1、按键点灯程序2、硬件实现二、流水灯1、流…

Vue2-黑马(二)

目录: (1)vue2-基础-属性绑定 (2)vue2-事件绑定 (3)vue2-双向绑定 (4)vue2-计算属性 (1)vue2-基础-属性绑定 属性与js数据绑定: …

react-router原理

前端路由的原理 自己来监听URL的改变,改变url,渲染不同的组件(页面),但是页面不要进行强制刷新(a元素不行)。 hash模式,localhost:3000/#/abc 优势就是兼容性更好,在老版IE中都可以运行缺点是…

DNS配置

TCP/IP提供了通过IP地址来连接到设备的功能,但对用户来讲,记住某台设备的IP地址是相当困难的,因此专门设计了一种字符串形式的主机命名机制,这些主机名与IP地址相对应。 在IP地址与主机名之间需要有一种转换和查询机制&#xff0c…

CANopen | 对象字典OD 06 - 创建对象字典变量,通过TPDO定时发送

文章目录一、前言二、实验目的三、对象字典OD四、TPDO1定时发送tx_Value变量一、前言 该笔记的程序: github 二、实验目的 CANopen从站有一个变量tx_Value,映射到TPDO1上。接着,CANopen从站每1S发送一次TPDO1,将tx_Value发送出去。 三、…

PasteSpider之文件同步软件的介绍

作为PasteSpider系统中的一大特色,那就是文件的差量同步和配置同步。能够实现对不同需求的良好实现。 在网站https://www.pastecode.cn/下载文件同步软件后,完全解压到自己的文件夹内,然后双击“SpiderSyncFile”,如下图: 打开登陆…