Spring - IoC

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

目录

1、概念

2、为什么要通过配置来做对象的建立及其依赖关系呢?

3、怎么实现对象及其依赖关系的创建呢?

4、控制反转IoC有啥好处?

5、具体实现


从今天开始,阅读资料,整理Spring框架的知识。

Spring框架:截止目前Java最流行的框架,最主要的思想是控制反转(IoC, inversion of Control)和面向切面(AOP, Aspesct Oriented Programming).

这一篇主要了解控制反转IoC。


1、概念

IoC本质是一个容器。Spring通过IoC这个容器,依靠描述(配置文件)来实现对象的创建及其依赖关系。

 


2、为什么要通过配置来做对象的建立及其依赖关系呢?

来想象一下,对于某一类的事物,可以定义一个接口,这类事物有一些子类,可以定义相应的子类。比如糖,有冬瓜糖、西瓜糖、南瓜糖等等。假设我想吃的是冬瓜糖,通过程序的方式,一般是如下这样使用的:首先定义接口下的某一类的具体对象,然后去使用这个具体对象。

// 吃糖,吃冬瓜糖,代码逻辑

Candy candy = new CandyWintermelon();
user.setCandy(candy);
user.useCandy();

但是这样就有一个问题,如果我又想吃南瓜糖了怎么办?是不是需要又需要再去申明一个南瓜糖的对象呢?答案是肯定的,必须再次申明一个南瓜糖的对象,才能实现我又想吃南瓜糖的逻辑。其实这看起来也还好,因为也就才多生成一个对象而已,感觉也不费事。不过想象一下:一个大型互联网的对象是成千上万的,如果需要不断创建、修改新的对象,那么将会出现很大的问题。

因此,Spring提出了使用IoC来实现对象及其依赖关系的创建,其目的就是为了实现对象及其依赖关系创建的快捷和方便。

 


3、怎么实现对象及其依赖关系的创建呢?

方式:用户编写配置文件(一般是XML形式),IoC容器通过这个配置文件去找到相应的对象和依赖关系,然后向用户注入找到的内容。

简单理解:这就是用户提供一个买货清单,然后IoC通过这个清单找货、卖货、送货的过程。其实挺简单的。控制反转的含义就是用户只需要提供用户的需求描述信息,而需求的资源是可以通过需求描述信息在IoC容器中找到的,负责寻找的是IoC容器(拥有控制权的是IoC容器),而不再是用户了,所以叫做控制反转。

 

示例:

使用Spring IoC注入南瓜糖给用户,XML配置文件。

// IoC配置文件

<bean id = "candy" class ="CandyWintermelon" / >
<bean id = "user" class ="xxx.user"  >
        <property name = "candy" ref = "candy"/>
</bean>

4、控制反转IoC有啥好处?

1、想要增加、修改资源不需要再去new对象,想要修改依赖关系也可以通过配置完成,可以即插即拔的管理对象及其关系;

2、把Bean之间的关系解耦了,更容易写出逻辑清晰的代码;

3、提供对Java Bean生命周期的管理,可以延迟加载,在生命周期内定义行为等。能够方便地使用、管理Java资源。

 


5、具体实现

参考:https://blog.youkuaiyun.com/weixin_44823472/article/details/97787171?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.compare&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.compare

Spring Ioc实现机制——简析 需要明确一点,任何项目没有了Spring,也依旧能做,那么为什么Spring还会这么火?答案就是Spring的两个特性IoC与AOP,这里需要指出的是,并不是Spring提出的AOP的概念,只能说是Spring很好的实现了AOP的特性。那么,这次就先讨论下Spring IoC的实现机制。  IoC是什么东东? IoC实现的机制是什么样子的? 模拟一个Spring IoC的实现 阅读详情

相关推荐

告别FreeRTOS?手把手带你用NuttX在STM32F4-Discovery上跑起第一个Shell

本文详细介绍了如何在STM32F4-Discovery开发板上从FreeRTOS迁移到NuttX,并运行第一个Shell。NuttX以其完整的POSIX兼容性和模块化架构优势,特别适合复杂网络应用的开发。通过环境搭建、移植配置、调试技巧及POSIX开发实践,帮助开发者高效构建嵌入式系统。

weixin_42526417的博客 299

Spring中IOC详解

一、IOC的原型 IOC ----控制反转 比如我们有一个功能是获取用户数据,我们使用Dao层实现这个功能,再在Service层调用这个功能。但是我们每增加一个接口,比如获取mysql中的数据,就要修改原来的代码,如果再增加一个新的接口,又需要去service实现类中修改对应的实现。 解决方法 用户实际调用的是业务层,dao层他们不需要接触 UserServiceImpl userService = new UserServiceImpl(); userSe

qq_41359998的博客 1万+

知识图谱与人工智能本体论:构建机器认知的语义基石

本文探讨了知识图谱与人工智能本体论如何作为机器认知的语义基石,让AI从‘知道数据’迈向‘理解知识’。文章详细拆解了本体论的核心构件与构建方法,并阐述了从本体到知识图谱的实践路径,包括知识获取、融合、存储及推理应用,最终分析了其在智能搜索与专家系统等场景中带来的根本性重塑。

nginx7reverse的博客 910

Spring中的IOC介绍

Spring中的IOC介绍IOC(控制反转)IOC介绍IOC是什么IOC能做什么Spring容器管理对象1、maven管理依赖2、给定容器的配置文件3、IOC容器管理对象4、通过容器来获取对象Spring中IOC容器介绍Spring中Bean的实例化方式1、基于XML配置方式装配bean2、使用注解方式装配Bean IOC(控制反转) IOC介绍 IOC是什么 IOC(Inversion of Control 即控制反转)将对象交给容器管理 考虑:谁控制谁、控制什么?为了是反转?哪些方面反转? 谁控制了谁?

m0_46853673的博客 1万+

告别虚拟机!在Windows上用WSL+VSCode搞定ArduPilot开发环境(保姆级避坑指南)

本文提供了一份详细的保姆级指南,介绍如何在Windows上使用WSL和VSCode搭建高效的ArduPilot开发环境,告别虚拟机性能损耗。从WSL安装、VSCode配置到ArduPilot固件编译和调试技巧,涵盖开发全流程中的关键步骤和常见问题解决方案,帮助无人机开发者快速构建专业级开发环境。

weixin_42543046的博客 461

Ubuntu22.04下安装LDAP

在Ubuntu22.04的时候可以使用apt的方式来安装,在安装LDAP的web 服务器的时候可以考虑选择 LDAP 帐户管理器 (LAM)。因为 PHPLDAPadmin 安装时需要 php 的环境依赖,相对来说安装麻烦。此外在 PHPLDAPadmin 中创建组织和用户时与平常的语法有很大不同,对新手来说不友好。

dl_11的博客 3944

【javaEE】Spring IOC

容器是⽤来容纳某种物品的(基本)装置。(有点废话)我们想想,之前课程我们接触的容器有哪些?• List/Map->数据存储容器• Tomcat->Web容器那么Spring也作为一个容器,装的是对象(Bean)这里的Bean跟在Java基础语法中是不一样的,在Javase中Bean指的是实体类,比如Student类在JavaEE进阶中,Bean指的是Spring管理的对象。

mr_yuanshen的博客 1300

Halcon Camera-calibration 相关算子(一)

Halcon Camera-calibration 相关算子介绍

qq_44744164的博客 1366

Spring IoC容器

核心技术 发行版5.0.8 这一部分的指导文档覆盖了所有的完全集成到Spring框架中的技术。 这些技术中首要的便是Spring框架的控制反转(IoC)容器。Spring框架的IoC容器的全面的处理是与Spring的面向切面编程(AOP)的彻底实现紧密相关的。Spring框架拥有他自己的AOP框架,该技术在概念上是很容器理解的,并且成功的解决了在Java企业编程中的AOP需求的80%的点。 该框...

hongbochen1223的专栏 1万+

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

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

数据知道的博客 1万+

yolov26改进 | Neck篇 | 利用Gold-YOLO改进yolov26对小目标检测能力(全网独家首发)

本文介绍利用Gold-YOLO的Neck改进YOLOv26,通过信息聚集—分发机制GD,先全局汇聚不同层级特征,再将融合后的全局信息重新注入各尺度分支,增强浅层细节与深层语义之间的交互,减少传统Neck逐层传递造成的信息损失。该结构虽然融合路径更长,但能够在不过度增加延迟的前提下提升多尺度目标检测能力,尤其适合大小目标并存、尺度变化明显和复杂背景场景。本文将讲解GD机制、Neck替换、模块注册与配置方法,并提供完整代码、配置文件及Codex修改思路,方便直接复现、实验对比和二次创新。

Snu77的博客 293

Spring——IOC

Spring是容器(可以管理所有的组件(类))框架什么是容器(Container): 从程序设计角度看就是封装对象的对象,因为存在放入、拿出等操作,所以容器还要管理对象的生命周期,如Tomcat就是Servlet和JSP的容器;为什么说Spring是一个一站式的轻量级开源框架呢?​ 轻量级:不是指Spring框架的模块少,数量很轻,而是Spring的优点Spring的体系结构图核心容器:提供了框架的基本组成部分,包括 IOC 和依赖注入功能。

会奔跑的茄子的博客 764

【论文硬核拆解】Ctx2Skill:让大模型自己跟自己玩,从上下文里「进化」出可复用技能

论文选择自然语言技能可解释性:技能是人类可读的 Markdown 文件,可以审查、编辑、调试可迁移性:即插即用,从一个模型到另一个模型无需参数访问:对闭源模型友好这比 SKILL0/SkillRL 等参数内化方法更实用,尤其是在商业 API 场景。

步子哥的博客 154

Spring IOC

合并 Bean 定义,对父类的定义进行合并和覆盖,如果父类还有父类,会进行递归合并,以获取完整的 Bean 定义信息。如果是方法调用是不算循环依赖的,循环依赖必须要持有引用。实际开发中,我们如果在对象 A 内部去创建、修改或者注销另一个对象 B,这会导致对象之间非常复杂的依赖关系,不利于代码的维护更新。比如我们直接在上层类内调用了底层类的构造方法,一旦底层类的构造方法发生改变,就必须修改所有上层类的代码。设值注入:依赖的对象通过 setter 方法传入的,对象已经实例化,发生属性填充和依赖注入的时候。

2401_84881237的博客 1646

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Spring IoC 详解

IoC即控制反转(Inversion of Control),也被称为依赖倒置原则,是设计模式六大原则之一。其核心思想是程序应依赖抽象接口,而非具体实现,从而降低代码间的耦合度。依赖注入(DI):不通过类内部直接创建依赖对象,而是将外部创建好的依赖对象通过构造函数或参数传递给类使用。依赖查找:受控对象通过容器 API 查找所需资源和协作对象。谁控制谁,控制什么:传统编程中,对象由程序主动创建;而 IoC 中,对象由容器控制创建,容器负责管理外部资源获取。为何反转,哪些方面反转。

YT的博客 1455

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Spring IoC

loC是Spring的核心思想其实loC我们在前面已经使用了,在类上面添加和注解,就是把这个对象交给Spring管理,Spring 框架启动时就会加载该类.把对象交给Spring管理,就是loC思想.IoC:(控制反转)也就是说 Spring 是⼀个"控制反转"的容器什么是控制反转呢?也就是控制权反转.什么的控制权发生了反转?获得依赖对象的过程被反转了也就是说,当需要某个对象时,传统开发模式中需要自已通过new创建对象,现在不需要再进行创建,把创建对象的任务交给容器,程序中只需要依赖注入。

2401_83177222的博客 1392

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Spring IoC - Spring IoC 的设计

前言 本文为解读Spring IoC 模块源码的开篇介绍。介绍Spring IoC 的相关概念与设计。 What is IoC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency...

Richard Program Studio 401

spring IOC的理解

是一个对象创建和依赖管理的设计模式。原来对象是由开发者来进行控制的,有了spring后,可以把对象交给spring来帮我们管理。使用IOC时,直接告诉框架,我需要哪些东西,然后spring框架创建,然后我们再拿出来用就行。IOC创建对象的方式:基于XML(少的很)和基于注解(配置类,扫描包)

2301_77574331的博客 1149

Spring IOC 过程

原创出处 http://www.jianshu.com/p/17b66e6390fd 「莫那一鲁道」欢迎转载,保留摘要,谢谢! 1. 广义的 IOC 2. Spring 的 IoC 3. 总结 1. 广义的 IOC IoC(Inversion of Control) 控制反转,即“不用打电话过来,我们会打给你”。 两种实现: 依赖查找(DL)和依赖注入(DI)。 IOC 和 DI 、DL...

a925907195的专栏 1233

Spring IOC详解

什么是Bean。

杰尼龟的小龟壳的博客 1138

Spring IoC &DI入门

IoC是Spring的核心思想,其实IoC我们已经使用过了,在类上添加@Rest Controller和@Controller注解,就是将这个对象交给Spring管理,Spring框架启动时就会加载该类,把对象交给Spring处理,就是IoC思想。概念:IoC (Inversion of Control) 即控制反转,是⾯向对象编程中的⼀种设计原则。主要是通过第三⽅IoC容器,对Bean对象进⾏统⼀管理,及组织对象之间的依赖关系。获得依赖对象的过程,由原本程序⾃⼰控。

wuyunhang123456的博客 899
上一篇: VM安装win7 ghost版
下一篇: 每日算法 - 有序矩阵中第k小的元素
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值