spring IOC的理解

【MDC开发者实战】多传感器融合算法在自动驾驶中的配置与优化 本文详细介绍了华为MDC平台在自动驾驶中多传感器融合算法的配置与优化实践。通过前融合与后融合技术,结合摄像头、激光雷达和毫米波雷达的数据,提升感知精度与可靠性。文章还分享了ARXML配置、标定技巧、算法调优及性能优化等实战经验,帮助开发者高效实现自动驾驶系统的传感器融合。 阅读详情

一,控制反转

控制反转是一个对象创建和依赖管理的设计模式。原来对象是由开发者来进行控制的,有了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的就是实际做事的方法,没加的就是套了一层)

IEC 62056协议栈深度拆解:从物理层握手到应用层AARQ,一次完整的DLMS通讯抓包分析 本文深入解析IEC 62056协议栈(DLMS/COSEM)的全流程通信机制,从物理层握手到应用层AARQ建立,提供详细的抓包分析和实战指南。涵盖RS-485配置、HDLC帧解析、OBIS编码解读等核心内容,并附有常见故障排查技巧,助力开发者高效实现电能表数据采集。 阅读详情

相关推荐

用UltraISO制作镜像以RAW格式刻录系统到U盘后,在Windows上无法识别的解决办法

在这篇文章中,用UltraISO制作镜像后,会使得U盘无法识别!!!那么,如何抹掉U盘的数据,格式化U盘呢?

拥抱具身智能,昇腾Ascend C 2730

Spring IOC的理解

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

lyk1184919379的博客 513

mysql 学习笔记(1):mysql 基本概念和 mysql workbench 的基本使用方法

…

qq_52740163的博客 1355

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

手把手教你用RTL8306MB搭建小型网络交换机:从原理到实战

本文详细介绍了如何使用RTL8306MB交换芯片从零搭建小型网络交换机的全过程。内容涵盖芯片原理分析、核心硬件电路设计(包括电源、时钟、RMII接口连接要点)、驱动开发与SMI通信实现,以及从物理链路到交换功能的系统调试实战。重点解析了将MAC5配置为RMII PHY模式与CPU对接的关键步骤和常见错误,帮助嵌入式开发者深入理解网络交换原理并完成实践。

weixin_29274969的博客 192

R语言 Chow Test

Chow 测试用于测试不同数据集上的两个不同回归模型中的系数是否相等。 该测试通常用于计量经济学领域,使用时间序列数据来确定数据在某个时间点是否存在结构性中断。 本教程提供了如何在 R 中执行 Chow 测试的分步示例 首先,我们将创建一些假数据: #create data data <- data.frame(x = c(1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 12, 12, 13,

Mrrunsen的博客 1946

Spring中的IOC详解

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

努力分享一些干货 8635

【工业相机】【深度4】线扫描相机 - 选型实践

前言: 在工业相机的深度应用的前三节里面,针对工业相机的选型、参数、应用计算等做了一些说明。期中,在深度3里面,在说明工业相机在速度场景下的应用的时候,专门开了一节介绍线扫描相机行频速度的计算公式和镜头的选型的大致说明,感觉说的还是不够透彻,切应用举例也不充分,这里特别开一个章节,基于线扫描相机的特点对比面阵相机的特点进行比较详细的说明,尤其对线扫描相机的选型实践,尤其是线扫描相机的分辨率选择计算、行频选择计算进行了充分的说明和计算说明,希望能够给用到线扫描工业相机的同学给予一定的参考: 阐述: 在编

山云的专栏 2万+

Spring IoC详解

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

2303_78892316的博客 5008

基于STM32F4XX 、HAL库的SHT40-CD1B-R3温湿度传感器驱动应用C语言程序设计

define SHT40_ADDR_READ 0x8B // CD1B 读地址 ((0x45 << 1) + 1)#define SHT40_ADDR_WRITE 0x8A // CD1B 写地址 (0x45 << 1)// 初始化 I2C1 (根据 CubeMX 生成的函数)// 湿度: -6%RH + 125%RH * (raw / 2^16)// 温度: -45°C + 175°C * (raw / 2^16)// 返回值: 0=成功, 1=失败(CRC错误或I2C通信错误)

PP_Cottage的博客 236

01 Python学习总结:Python简介及入门

Python 是一门高级编程语言,以其简洁、易读和强大的功能而广受欢迎。它适用于多种应用场景,包括 Web 开发、数据分析、人工智能、自动化脚本等。以下是 Python 的简介及入门知识总结,帮助你快速了解并开始学习 Python。

数据知道的博客 1万+

对Spring IOC的理解

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

weixin_44061521的博客 791

构建 Skill 的完整指南

Skill开发指南摘要 Skill是用于定制Claude AI行为的指令包,包含SKILL.md主文件及可选脚本、参考文档和资源。本文提供了完整的Skill开发指南: 核心概念 三层渐进式披露结构(元数据/主指令/参考文档) 支持独立工作流和MCP集成 跨平台兼容性(Claude.ai/ClaudeCode/API) 开发流程 规划:明确2-3个具体用例 结构要求:kebab-case命名、必备YAML元数据 编写规范:清晰触发条件、分步指令、错误处理 典型应用模式 • 文档生成(类别1) • 工作流自动化

wjianwei666的专栏 298

如何理解Spring中的IOC

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

qq_45821255的博客 1230

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

谈谈对Spring IOC的理解

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

qq_52467117的博客 874

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

深入理解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、付费专栏及课程。

余额充值