Spring中的IOC与DI-细胞内物质与传递

对IOC的认识

Spring Inversion of Control简称Spring IOC,是一种设计原则,其主导主导思想是:IOC通过自行去查找及注入所需的资源,如依赖对象、常量数据等,而不是在程序中主动去new对象,将对象的控制权从应用程序代码转移到外部容器,在代码中不需要直接创建和管理对象,从而实现对象之间的解耦(控制反转)。所以,IOC的核心概念是依赖注入(Dependency Injection,DI),查找和动态注入对象的过程就是DI,一旦注入完成,IOC容器提供全生命周期的服务。

好莱坞原则:不要给我们打电话,我们会给你打电话。

导演(上层)去联系(通知)演员,而不是演员去主动联系(轮询骚扰)导演。

Spring中的Bean

在Spring框架的日常开发中,会经常遇到编写一个Bean、注入一个Bean、使用一个Bean、销毁一个Bean的情况,那么到底什么是一个Bean?

把Bean理解成豆还是有些抽象,如果把一个个Bean看成一个个基本组成部分,是不是瞬间具体化了许多。

如果把Spring比做成一个植物细胞,不同的细胞结构聚合在一起组成了一个细胞,液泡、细胞核、线粒体相当于一个个Bean,负责不同的分工,如同Spring中的业务逻辑对象、数据访问对象、控制器、服务、工具类等。

即:

如果把Spring比作一个细胞,各个Bean则相当于细胞内的器官和分子的功能,各个Bean配合完成维持生命体征各个的功能。

Bean工厂

那么Bean工厂的作用是什么?

如果把Spring比作一个细胞,那么Bean工厂可以类比为细胞的细胞核,负责创建和管理细胞内各个分子及组件,调度它们的功能和行为。

Bean工厂的功能包括:

  1. 创建Bean实例:细胞核负责DNA的复制和转录,生成各种分子和组件。类似地,Bean工厂负责解析配置信息,根据定义的Bean元数据创建相应的Bean实例。
  2. 管理Bean的生命周期:细胞核控制细胞内分子和组件的生命周期,包括生成、活跃和销毁。Bean工厂也负责管理Bean的生命周期,通过初始化和销毁方法,确保Bean在适当的时候被创建和销毁。
  3. 解决依赖关系:细胞内的分子和组件之间存在复杂的依赖关系,细胞核负责解决这些依赖关系,确保分子和组件能够正确地协同工作。
  4. 管理Bean的作用域:细胞核具有控制细胞内分子和组件作用域的能力,例如调节基因的表达水平。Bean工厂也支持不同的Bean作用域,如单例、原型等,根据配置决定Bean的创建和销毁方式。
对DI的认识

Spring DI(Dependency Injection)即控制反转,它用于解决对象之间的依赖关系,将一个对象所依赖的其他对象注入到它的属性、方法参数或构造函数中。对象间的依赖关系由容器管理,实现对象间解耦。

Spring中的DI

如果将Spring比作一个细胞,那么依赖注入(Dependency Injection,DI)的作用类似于细胞内的物质传递和分配。

类比细胞分裂复制的过程,细胞核在分裂过程中需要从线粒体获取能量和物质,但线粒体与细胞核并没有直接的联系。这种能量和物质的传递是由细胞内部统一调配的,类似地,Spring扮演着细胞内的角色,接管两个Bean之间的功能,通过依赖注入将需要的物料传递给目标对象。

就像细胞内部的调配系统一样,Spring作为一个容器,通过配置文件、注解或其他方式描述对象之间的依赖关系,并将依赖的对象动态地注入到目标对象中。这样,目标对象就能够获取所需的能量和物质,而无需自己关心依赖对象的创建和管理。这种解耦和统一调配的特性使得应用程序的开发更加灵活和可扩展。

因此,可以将依赖注入比作细胞内物质传递和分配的过程,通过Spring的依赖注入,对象之间的依赖关系得以解耦,由Spring负责提供和传递所需的物料,从而实现更加灵活和可维护的应用程序开发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值