spring IOC的理解

2024年上半年网络工程师下午真题及答案解析 位于MPLS域边缘、连接其他网络的LSR称为( 3 ),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时,MPLS入口设备分析IP报文的内容并为其添加合适的标签,所有MPLS网络中的LSR根据标签转发数据,当该IP报文离开MPLS网络时,标签由出口LER弹出。LSP的出口LER称为( 6 )。某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。 阅读详情

一,控制反转

控制反转是一个对象创建和依赖管理的设计模式。原来对象是由开发者来进行控制的,有了spring后,可以把对象交给spring来帮我们管理。使用IOC时,直接告诉框架,我需要哪些东西,然后spring框架创建,然后我们再拿出来用就行。

IOC创建对象的方式:基于XML(少的很)和基于注解(配置类,扫描包)

DI依赖注入(控制反转的具体表现)

把对应的属性的值注入到具体的对象中,@Autowired完成属性注入

基于XML:xml通过解析+反射创建对象。开发者把需要的对象在 XML 中进行配置,Spring 框架读取这个配置文件,根据配置文件的内容来创建对象。比较麻烦。

基于注解:

1,通过配置类:用一个java类来替代XML文件,把在XML中配置的内容放到配置类中

        新建一个配置类,加@Configuration注解,这个类就相当于整个XML文件。这个类里面创建一个方法,就对应xml中的bean,返回对象即可。方法上加@Bean注解,让spring可以调用这个方法,将这个方法返回的对象存到IOC里面

        怎么获取:Bean的名称默认是方法名,也可以通过@Bean改

        感觉还是比较麻烦,写的东西太多了

2,扫包+注解

        不再依赖XML和配置类,直接将bean的创建交给目标类,在目标类添加注解来创建

        直接给类加注解,@Component注解告诉spring框架,这个类要被注入到IOC

        怎么用:加载IOC容器,指定包名扫包,然后直接就可以取Bean

        可以实现依赖注入

        依赖注入,就是一个类里面有别的类,一个对象里有其他对象,那我在这个里面的对象上加个@Autowired自动注入注解:在IOC容器里找到对应Bean,再赋值给里面的类

@Autowired:默认通过类型注入,所以在类里面叫啥名都能取出。如果要通过名字去找,那就加@Qualifier注解:表示要找名字叫啥的bean

  1. IOC容器本体在堆里面

  2. ​Bean定义存储在方法区+堆里

  3. ​​BeanDefinition​​存储在堆内存

  4. ​​Bean实例存储在堆内存(单例池​​(singletonObjects))

  5. IOC容器实例、Bean实例在堆里

  6. Bean类元数据在方法区

  7. IOC容器本身是堆内存中的一个特殊对象

  8. 所有单例Bean实例存储在容器的singletonObjects(堆内存)

  9. 类定义等元数据存储在方法区(Metaspace)

二,容器

容器用来存放对象,使用map结构来存放,在spring中一般存在三级缓存(循环依赖问题),单例池(singletonObjects)存储和获取完整bean对象(涉及到bean生命周期,bean生命周期全是由容器进行管理)。

Bean对象是指那些由Spring容器实例化、配置和管理的对象,这些对象的生命周期完全由Spring容器控制。从创建到使用销毁都是由容器来管理的。

总说:

分说:容器创建

容器创建

1、准备好bean容器:一般聊ioc容器的时候要涉及到容器的创建过程(beanFactory,DefaultListableBeanFactory,容器最上层有个接口叫beanFactory,最普遍的调用情况就是DefaultListableBeanFactory,在使用时优先创建当前的bean工厂,创建完后,)优先向向bean工厂中设置一些参数(BeanPostProcessor,Aware接囗的子类)等等属性

2、加载解析bean对象:准备要创建的bean对象的定义信息对象 (beanDefinition),(涉及到xml或者注解的解析过程,解析完成后才能获取完整的bean对象beanDefinition)

3、扩展点:beanFactoryPostProcessor的处理,此处是扩展点(修改bean定义信息),如PlaceHolderConfigurSupport,ConfigurationClassPostProcessor完成具体的功能

4、BeanPostProcessor的注册功能,方便后续对bean对象完成具体的扩展功能

5、通过反射的方式讲BeanDefinition对象实例化成具体的bean对象

6、bean对象的初始化过程(1,填充属性,2,调用aware子类的方法,3,调用BeanPostProcessor前置处理方法,4,调用init-method方法,5,调用BeanPostProcessor的后置处理方法)

7、生成完整的bean对象,通过getBean方法可以直接获取

8、销毁过程

这是我对ioc容器的整体理解

具体的细节就不清楚了,但是spring中的bean都是通过反射的方式生成的,同时其中包含了很多的扩展点(对占位符的处理),比如最常用的对BeanFactory的扩展,对bean的扩展,我们在公司对这方面的 使用是比较多的,除此之外,ioc中最核心的也就是填充具体bean的属性,和生命周期(背一下)

扩展点:扩展点是Spring框架提供的​​可编程干预点​​,允许开发者在容器管理的不同生命周期阶段插入自定义逻辑,实现对框架行为的深度定制。

springIOC的底层实现

底层实现:工作原理、过程、数据结构、流程、设计模式、设计思想

主要说你对他的理解和了解过的实现过程。

反射(bean的创建涉及到了),突出工厂的价值(beanfactory),设计模式(会的说,不会的不说),关键的方法(createBeanFactory,getBean,doGetBean,createBean,doCreateBean,createBeanInstance,populateBean说出几个就行,加do的就是实际做事的方法,没加的就是套了一层)

晶闸管选型参数,结构原理,工艺与注意问题总结 闸管(Thyristor)是一种半导体开关器件,也被称为可控硅整流器(SCR, Silicon Controlled Rectifier)。它可以在高电压和大电流条件下工作,常被用于交流电的控制和整流。本文对晶闸管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。 阅读详情

相关推荐

告别手动脚本!用TSMaster Python小程序5分钟搞定CAN报文自动发送

本文介绍了如何使用TSMaster的Python小程序功能快速实现CAN报文自动发送,大幅提升汽车电子测试效率。通过简洁的Python代码示例,展示了如何替代传统手动操作和复杂C脚本,实现周期性发送、动态修改报文内容等常见需求,帮助工程师5分钟内完成自动化配置。

weixin_30292843的博客 511

Spring IOC的理解

痛定思痛决定开一篇自己总结的Spring专题,最老生常谈的IOC理解放到第一篇。

lyk1184919379的博客 513

Windows10下部署Heygem进行数字人生成

对于使用Heygem生成数字人,需要注意几个问题: + 需要使用Nvidia的显卡。 + 需要在Windows上进行本地部署。主要原因为客户端是Windows的,客户端对上传的视频写入硬编码的`D:\heygem_data\voice\data`目录,需要在容器上读取这些文件。 + 需要在Windows上部署Docker,将Windows的目录映射到容器中,由容器中的服务进行读取。 + 需要特别注意,一定要有D盘,这个D盘是Windows的D盘,不能是插入的USB设备后产生的D盘。 + 需要下载3个Doc

冀辉的博客 5619

Spring IOC详解

目录一、IOC的基本概念1.简述 IOC 概念2.Spring的IoC理解3.IOC的优点是什么?二、程序中的耦合1.程序的耦合和解耦2.解决耦合的思路3.工厂模式解耦程序的耦合三、解决程序的耦合1.BeanFactory和ApplicationContext有什么区别?2.ApplicationContext的常用实现类:3.Bean 标签解释Spring的几种bean的作用域4.Spring Bean的生命周期5.实例化bean的三种方式第一种方式:使用默认无参构造函数第二种方式:spring 管理静态

星海IT学习之路 2202

华为灵衢UB总线介绍

华为发布"灵衢"(UB)超节点互联协议,旨在构建支持AI大模型计算的基础设施。该协议采用统一内存语义和对等架构,使设备可直接访问远程内存,实现资源池化。技术突破包括2.1微秒超低时延和TB级带宽,支持64节点、52万张昇腾卡的集群互联。相比传统RDMA,"灵衢"更注重系统级资源调度,而非单纯数据传输。华为开放技术规范,推动生态建设,已有厂商开发兼容IP核。"灵衢"可适应x86、RISC-V等架构,未来将扩展至百万卡规模集群。

技术引领业务创新 4426

uniapp - 详解APP端免费人脸识别+人脸核身+人脸对比+活体检测插件功能完整源码,uniAPP纯前端实现不依赖后端API接口或第三方付费人脸识别功能示例(仅兼容安卓app与苹果ios App)

uniapp免费人脸认证功能,uniapp APP开发活体人脸识别,UniApp人脸识别与活体检测,人脸核身uni-app插件 活体检测 人脸对比 人脸识别 人脸认证 身份证件,uni-app人脸核身,如何在app端实现免费人脸识别教程,人脸核身uni-app插件活体检测,uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件,详细实现人脸识别和活体检测功能,实时监测人脸是否进入区域及动作是否正确播报,提供提供实名认证、身份证识别、有没有免费的,api,活体检测,人脸信息采集、刷脸扫脸认证示例

🏆 前端领域优质创作者 4385

Spring中的IOC详解

单例Bean和多实例Bean的生命周期主要区别在于实例化和销毁的管理方式,单例Bean在容器启动时创建一个实例,并由容器负责管理其生命周期的完整过程。在Spring框架中,Bean是应用程序的核心组件,它们由Spring容器创建、组装和管理,以帮助开发者实现松耦合、可测试和可维护的代码。IOC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。Bean的自动装配是Spring框架提供的一种便捷的方式,用于自动解析和设置Bean之间的依赖关系,而无需显式配置每一个依赖关系的方式。

努力分享一些干货 8635

Vek385评估板(二):板子联网 & memtester安装(LPDDR5X测试)

继上一篇文章:Vek385评估板(一):EDF成功烧录启动及一些问题。 本章完成最主要的两个功能:开发板联网+内存 memtester。因为我是做测试行业的,所以这两个是最想试的。内存测试,除了FPGA测,也可以系统级测,本次在versal上实现这个功能,主要是可以应急。在没有安卓、X86的情况下,可以使用本方案测试。 下一篇会继续做一些其他功能。

千歌叹尽执夏的博客 223

Spring IoC详解

Spring 是一个开源的Java框架,它提供了丰富的功能和组件,用于简化企业级应用程序的开发。Spring 框架提供了依赖注入、面向切面编程、事务管理、数据访问等功能,是一个全面的企业应用开发解决方案。Spring MVC 是 Spring 框架中的一个模块,即Spring功能的一部分,用于构建 Web 应用程序的 MVC(Model-View-Controller)架构。Spring MVC 提供了基于注解的方式来定义控制器、处理请求和渲染视图,使得开发 Web 应用程序更加简单和灵活。

2303_78892316的博客 5008

【Unity实战篇】 接入百度翻译,实现文本自动翻译功能

日常在做项目的过程中,游戏本地化几乎已经成为必不可少的一步。 本篇文章将演示怎样在Unity中接入百度翻译,实现文本自动翻译的功能。

努力前行,总会成为自己心中的那道光 9059

第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码)

大家好,我是cuiwin!本节内容,我们从零开始开发基于Python(Flask)的后端项目,对接Vue Vben Admin(vben5)。登录mysql数据库执行: 创建数据库。

cuiwin的专栏 2266

对Spring IOC的理解

对Spring IOC的理解什么是IOC?IOC底层原理三级目录 什么是IOC? IOC(Inversion of Control)翻译过来叫控制反转或反转控制。当我们需要创建一个对象,原始方式是new一个对象。比如现在有两个类,我在一个类中想用另一个类的方法,那么就将一个类的引用传过去进行使用,或者在一个类中创建另一个类的对象进行使用。 而现在这个过程可以通过IOC进行实现,它实现的好处是什么呢?可以帮我们实现解耦的操作。简单来说,控制反转就是把对象创建和对象之间的调用过程,交给Spring进行管理。 在

weixin_44061521的博客 791

后台管理系统-7-vue3之引入配置文件baseURL

mock=false,本地模拟。mock=true,线上模拟。baseURL+url=实际请求的URL。get请求param参数,post请求data参数。

qq_20466211的博客 208

如何理解Spring中的IOC

此文章可以快速的帮你理解透彻IOC和DI等核心概念。

qq_45821255的博客 1230

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

谈谈对Spring IOC的理解

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解   首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshil

qq_52467117的博客 874

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

深入理解Spring IOC

我们在最开始学习 Spring 的时候,就接触 IOC 了,IOC是Spring相对比较核心的概念,本文上面五个体系可以说是 Spring IOC 中最核心的部分,只有深入理解了IOC,在我们阅读Spring源码的时候,我们才能够更更加清晰。

小徐的博客 2019

对Spring中IOC的理解?

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 这个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解   首先要分享的是Iteye的开涛这位技术牛人对Spring框...

千手修罗之乐少的博客 375

谈谈我对Spring IOC的理解

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术牛人对Spring框...

weixin_44782075的博客 404

谈谈对Spring IOC 的理解

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 1.IOC是什么? Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接.

欢迎阅读程序猿小张的博客~ 305

Spring 中Ioc的理解

Spring框架的IOC(控制反转)是其核心特性,通过将对象创建和依赖管理的控制权从业务代码反转给容器,实现代码解耦和简化开发。IOC容器负责加载配置、创建Bean、管理依赖关系和生命周期。依赖注入(DI)是IOC的具体实现方式,包括Setter注入、构造器注入和字段注入三种方式。Bean的生命周期包含加载定义、实例化、属性注入、初始化、就绪和销毁六个阶段。底层通过反射、BeanDefinition和三级缓存等机制实现,能解决单例Bean的循环依赖问题。IOC的优势在于解耦、简化开发、便于测试和统一管理,是

beiguo666的博客 986

关于Spring中IoC的一些理解

简介:梳理Spring中IoC的相关知识。 目录: IoC基本概念 装配Bean信息到Spring中 从Spring中获得对象 除了上面三个大的概念,下面还有一些小知识点 bean实例化的方式 bean的作用域 bean的生命周期 1.IoC基本概念 IoC(Inversion of Control),控制反转。原先我们创建对象和管理对象(初始化等)的时候,都是通过在本类中,使用构造方法来...

opt1997的博客 315

【Spring】理解IOC、AOP

Spring框架如何实现AOP:代理技术(静态代理、动态代理(JDK代理、CGLIB代理))(推荐:编译器间就可知道注入的bean是否为空,是否存在循环依赖问题)

zxy0000zxy的博客 987
上一篇: springboot面试题
下一篇: Bean生命周期
斯kk
博客等级 码龄4年 455粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值