广告
返回顶部
首页 > 资讯 > 精选 >如何理解spring框架中的ioc
  • 233
分享到

如何理解spring框架中的ioc

2023-06-17 10:06:00 233人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关如何理解spring框架中的ioc,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。摘要: 关于spring框架中的ioc的幽默解释 IoC就是Inversion of Co

这期内容当中小编将会给大家带来有关如何理解spring框架中的ioc,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

摘要: 关于spring框架中的ioc的幽默解释 IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转...

IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。

下面我们以几个例子来说明什么是IoC

假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy。那么,我们的问题是,Girl如何能够认识这个Boy?

在我们中国,常见的MM与GG的认识方式有以下几种:

1 青梅竹马;

2 亲友介绍;

3 父母包办

那么哪一种才是***呢?

青梅竹马:Girl从小就知道自己的Boy。

public class Girl {  void kiss(){  Boy boy = new Boy();  }  }

然而从开始就创建的Boy缺点就是无法在更换。并且要负责Boy的整个生命周期。如果我们的Girl想要换一个怎么办?(笔者严重不支持Girl经常更换Boy)

亲友介绍:由中间人负责提供Boy来见面

public class Girl {  void kiss(){  Boy boy = BoyFactory.createBoy();  }  }

亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友BoyFactory经常是以Singleton的形式出现,不然就是,存在于 Globals,无处不在,无处不能。实在是太繁琐了一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一***的朋友爱上了我的男朋友呢?

父母包办:一切交给父母,自己不用费吹灰之力,只需要等着Kiss就好了。

https://file.lsjlt.com/upload/202306/14/rwlxrdbajjz.gif>;  public class Girl {  void kiss(Boy boy){  // kiss boy  boy.kiss();  }  }

Well,这是对Girl***的方法,只要想办法贿赂了Girl的父母,并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用哦。至少Boy和Girl不用自己瞎忙乎了。

这就是IOC,将对象的创建和获取提取到外部。由外部容器提供需要的组件。

我们知道好莱坞原则:“Do not call us, we will call you.” 意思就是,You, girlie, do not call the boy. We will feed you a boy。

我们还应该知道依赖倒转原则即 Dependence Inversion Princinple,DIP。

Eric Gamma说,要面向抽象编程。面向接口编程是面向对象的核心。

组件应该分为两部分,即

Service, 所提供功能的声明

Implementation, Service的实现

好处是:多实现可以任意切换,防止 “everything depends on everything” 问题.即具体依赖于具体。

所以,我们的Boy应该是实现Kissable接口。这样一旦Girl不想kiss可恶的Boy的话,还可以kiss可爱的kitten和慈祥的grandmother。

Https://file.lsjlt.com/upload/202306/14/j2h3nkmpqhs.gif>;

二、IOC的type

IoC的Type指的是Girl得到Boy的几种不同方式。我们逐一来说明。

IOC type 0:不用IOC

public class Girl implements Servicable {  private Kissable kissable;  public Girl() {  kissable = new Boy();  }  public void kissYourKissable() {  kissable.kiss();  }  }

Girl自己建立自己的Boy,很难更换,很难共享给别人,只能单独使用,并负责完全的生命周期。

IOC type 1,先看代码:

public class Girl implements Servicable {  Kissable kissable;  public void service(ServiceManager mgr) {  kissable = (Kissable) mgr.lookup(“kissable”);  }  public void kissYourKissable() {  kissable.kiss();  }  }

这种情况出现于Avalon Framework。一个组件实现了Servicable接口,就必须实现service方法,并传入一个ServiceManager。其中会含有需要的其它组件。只需要在service方法中初始化需要的Boy。

另外,J2EE中从Context取得对象也属于type 1。

它依赖于配置文件

<container> <component name=“kissable“ class=“Boy"> <configuration> &hellip; </configuration> </component> <component name=“girl" class=“Girl" /> </container>

IOC type 2:

public class Girl {  private Kissable kissable;  public void setKissable(Kissable kissable) {  this.kissable = kissable;  }  public void kissYourKissable() {  kissable.kiss();  }  }

Type 2出现于Spring Framework,是通过JavaBean的set方法来将需要的Boy传递给Girl。它必须依赖于配置文件。

<beans> <bean id=“boy" class=“Boy"/> <bean id=“girl“ class=“Girl"> <property name=“kissable"> <ref bean=“boy"/> </property> </bean> </beans>

IOC type 3

public class Girl {  private Kissable kissable;  public Girl(Kissable kissable) {  this.kissable = kissable;  }  public void kissYourKissable() {  kissable.kiss();  }  }

这就是PicoContainer的组件 。通过构造函数传递Boy给Girl。

PicoContainer container = new DefaultPicoContainer();  container.reGISterComponentImplementation(Boy.class);  container.registerComponentImplementation(Girl.class);  Girl girl = (Girl) container.getComponentInstance(Girl.class);  girl.kissYourKissable();

上述就是小编为大家分享的如何理解spring框架中的ioc了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何理解spring框架中的ioc

本文链接: https://www.lsjlt.com/news/288236.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解spring框架中的ioc
    这期内容当中小编将会给大家带来有关如何理解spring框架中的ioc,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。摘要: 关于spring框架中的ioc的幽默解释 IoC就是Inversion of Co...
    99+
    2023-06-17
  • Spring框架IOC容器底层原理详解
    目录1、什么是IOC2、IOC容器的底层原理3、那么上边提到的三种技术如何实现IOC的呢4、IOC(接口)1、什么是IOC IOC – Inverse of Contro...
    99+
    2022-11-13
  • Java中Spring框架之IOC如何配置
    这篇文章主要介绍了Java中Spring框架之IOC如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Spring的IOC配置Spring最重要的特性是IOC控制反转,利...
    99+
    2023-06-02
  • Spring(一):IOC如何推导和理解
    目录IOC的推导1.1、模拟一个正常查询信息的业务流程:1.2、多个种类的查询1.3、优化查询方式1.4、IOC本质IOC的推导 1.1、模拟一个正常查询信息的业务流程: ①mapp...
    99+
    2022-11-12
  • 如何理解Spring框架中Bean的生命周期
    如何理解Spring框架中Bean的生命周期,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.Bean的生命周期关于Bean的...
    99+
    2022-10-19
  • 浅谈Spring中IOC的理解和认知
    IOC的推导 1.1、模拟一个正常查询信息的业务流程: ①mapper层:因为没有连接数据库,这里我们写一个mapper的实现类来模拟数据的查询 public interface...
    99+
    2022-11-12
  • 如何在Spring框架中管理NPM包?
    Spring框架是Java开发中最流行的框架之一,它提供了很多有用的功能,例如依赖注入和AOP。但是,它并不能直接管理NPM包。本文将介绍如何在Spring框架中管理NPM包,以及如何使用它们来构建更好的Web应用程序。 一、什么是NPM包...
    99+
    2023-07-30
    spring numpy npm
  • 一文理解和实现现代PHP框架里的IOC容器
    本篇文章给大家带来了关于PHP的相关知识,其中主要介绍了关于IOC容器的相关内容,IOC的全称是:Inversion Of Control,反转控制,下面一起来看一下,希望对大家有帮助。容器是什么?相信很多人听说过依赖注入,依赖注入实现的基...
    99+
    2023-05-14
    php
  • Spring框架对于Bean的管理详解
    目录什么是Bean管理Bean管理操作的两种方式基于注解的方式实现Bean管理和注入属性(常用)1.什么是注解2.Spring针对Bean管理中创建对象提供的注解3.用注解的方式创建...
    99+
    2022-11-13
  • Spring 框架中如何处理数组数据?
    Spring 框架是一个非常流行的 Java 开发框架,它提供了很多有用的工具和类库来帮助开发人员快速构建可靠的应用程序。在 Spring 框架中,处理数组数据是一个非常常见的任务。本文将介绍 Spring 框架中处理数组数据的方法。 声...
    99+
    2023-08-02
    编程算法 spring 数组
  • 如何在Spring框架中实现动态代理
    这篇文章给大家介绍如何在Spring框架中实现动态代理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。动态代理,是一种通过运行时操作字节码,以达到增强类的功能的技术,也是Spring AOP操作的基础,关于AOP的内容,...
    99+
    2023-05-31
    spring 动态代理
  • Spring 框架如何处理数据类型?
    Spring 是一个非常受欢迎的 Java 框架,它的数据类型处理功能是其重要的特性之一。在这篇文章中,我们将探讨 Spring 框架如何处理数据类型,并演示一些代码示例。 基本数据类型转换 Spring 框架提供了一组类型转换器,可...
    99+
    2023-10-24
    数据类型 spring 大数据
  • 如何使用Spring Batch批处理框架
    这篇文章主要讲解了“如何使用Spring Batch批处理框架”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Spring Batch批处理框架”吧!1 前言Spring Batch是...
    99+
    2023-06-16
  • 如何在Spring框架中装配Bean
    这篇文章将为大家详细讲解有关如何在Spring框架中装配Bean,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Bean的简介Java开发者一般会听过JavaBean这个概念,所谓的JavaB...
    99+
    2023-05-31
    spring bean bea
  • 如何在Spring框架中使用NumPy?
    Spring框架是一个非常流行的Java开发框架,而NumPy则是一个Python科学计算库。虽然它们似乎没有直接的关系,但是在某些情况下,我们可能需要在Spring框架中使用NumPy。本文将介绍如何在Spring框架中使用NumPy,...
    99+
    2023-07-30
    spring numpy npm
  • 如何使用 PHP 解析 Spring 框架中的配置文件?
    Spring 是一个流行的 Java 开发框架,被广泛应用于企业级应用开发中。在 Spring 框架中,配置文件起着至关重要的作用,因为它们描述了应用程序中各个组件之间的关系,并提供了各种配置选项,以满足不同应用程序的需求。本文将介绍如何使...
    99+
    2023-07-02
    spring 文件 javascript
  • 如何使用 Python 解析 Spring 框架中的配置文件?
    Spring 框架是一个广泛使用的 Java 应用程序框架,它的主要特点是将业务逻辑与底层代码分离。在 Spring 中,应用程序的配置文件扮演着至关重要的角色,它们描述了应用程序的各种设置和配置,如数据库连接、日志设置、Web 应用程序上...
    99+
    2023-09-04
    文件 关键字 spring
  • 如何对Spring框架注解进行配置
    本篇文章为大家展示了如何对Spring框架注解进行配置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言Spring框架对Bean进行装配提供了很灵活的方式,下面归纳一下主要的方式:在XML中进行显...
    99+
    2023-05-31
    spring
  • SSM框架中使用Spring的@Transactional注解进行事务管理
    一 介绍在企业级应用中,保护数据的完整性是非常重要的一件事。因此不管应用的性能是多么的高、界面是多么的好看,如果在转账的过程中出现了意外导致用户的账号金额发生错误,那么这样的应用程序也是不可接受的数据库的事...
    99+
    2022-10-18
  • Java中Spring框架之AOP如何配置
    这篇文章主要介绍了Java中Spring框架之AOP如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  什么是AOP  AOP(Aspect Oriented Prog...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作