Spring IOC:IOC在Spring底层中如何实现?

这篇具有很好参考价值的文章主要介绍了Spring IOC:IOC在Spring底层中如何实现?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编译软件:IntelliJ IDEA 2019.2.4 x64
操作系统:win10 x64 位 家庭版
Maven版本:apache-maven-3.6.3
Mybatis版本:3.5.6
spring版本:5.3.1



Spring系列专栏文章目录

  • 第一章:初识Spring:如何在Maven工程上搭建Spring框架?
  • 第二章:Spring IOC:IOC在Spring底层中如何实现?

一. 什么是IOC?

IOC,英文全称为Inversion of Control,意为反转控制。不是什么新的开发技术,而是一种开发设计思想

我们都知道在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式,增加了学习成本,同时降低了开发效率。

这里的组件是什么?

在Spring框架中,组件(Component)是指可以被Spring容器管理和配置的对象,包括Java类和Bean等。

反转控制的思想完全颠覆了上述的传统方式:即反转了资源的获取方向,变成容器主动的将资源推送给需要的组件开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可,极大的降低了学习成本,提高了开发的效率。

Spring IOC:IOC在Spring底层中如何实现?

例如,当我们突然想吃红烧狮子头这道菜,传统的方式是我们自己去菜市场买菜,购置并准备烹饪这道菜的原材料,调料与烹饪工具,自己动手做这道菜。而使用IOC的思想来看,就是我们去饭馆吃饭,点上红烧狮子头这道菜,让饭馆给我们做,我们不需要准备这道菜的原材料和做法。这有点类似面向对象的设计思想–“我不做,我让你去做”


二. IOC在spring中的实现

我们都知道spring框架中的核心部分是“IOC”思想,即控制反转。当应用程序启动时,spring容器会帮助开发者去创建相应的对象,注意是spring容器在创建对象,并将需要的依赖关系在运行时注入到对象中,这个依赖关系的注入过程就被称为依赖注入【DI】

那什么是依赖关系?

用通俗的话来说,就是“我需要你,所以我依赖于你,我和你是依赖关系;而你是独立的,可以不需要我”,比如,我们中国人吃饭,都是拿筷子夹菜,扒饭吃。在这一现象中,我们在吃饭的过程中需要用到筷子,我们依赖于筷子,而筷子不需要依赖谁。ok,我们和筷子构成了依赖关系。在Java程序中,可以这样设计,将我们中国人提取抽象为一个ChinesePerson类,筷子也抽象为chopsticks类,ChinesePerson类需要用到筷子,可以把chopsticks类【筷子】作为它的成员属性。

依赖注入,谁注入谁?注入了什么?

IOC容器会注入应用程序依赖的对象,注入依赖的对象它所需要的外部资源(包括对象、资源、常量数据),比如基于上面的案例情景中,IOC容器会在ChinesePerson类为它的成员属性注入它所依赖的对象,即chopsticks类的对象。

2.1 在spring底层中,IOC如何实现?

它主要通过BeanFactory和ApplicationContext两个接口来实现

2.1.1 BeanFactory与ApplicationContexet接口

  • BeanFactoryIOC容器的基本实现,是Spring内部的使用接口,它主要负责创建并管理bean对象,是面向Spring本身的,并不提供给开发人员 使用的
  • ApplicationContextBeanFactory的子接口,它提供了更多的高级特性支持,例如AOP与事务传递机制等等。它是面向Spring的使用者,几乎所有场合都能使用它

2.1.2 IOC类的图解

Spring IOC:IOC在Spring底层中如何实现?文章来源地址https://www.toymoban.com/news/detail-437637.html

  • BeanFactory接口:Springl底层IOC实现【面向Spring框架】
    • ApplicationContext子接口:面向程序员
      • ConfigurableApplicationContext子接口:提供关闭或刷新容器对象方法
        • ClassPathXmlApplicationContext:基于类路径检索xml文件【推荐这种】
        • FileSystemXmlApplicationContext:基于文件系统检索xml文件

到了这里,关于Spring IOC:IOC在Spring底层中如何实现?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在Intellij-idea如何编译maven工程

    在 IntelliJ IDEA 中编译 Maven 工程,你需要遵循以下步骤: 打开 IntelliJ IDEA :首先,启动 IntelliJ IDEA。 打开 Maven 项目 :在欢迎界面上,选择 \\\"Get from Version Control\\\",然后选择你的 Maven 项目的仓库地址。或者,如果你已经有了项目文件(如  .idea  和  pom.xml ),你可以直接打开这

    2024年01月18日
    浏览(89)
  • Intellij-idea 如何编译maven工程*

    在 Intellij IDEA 中编译 Maven 工程的步骤如下: 打开你的 Maven 工程。如果工程已经在 IDEA 中打开,那么你可以直接进行下一步。如果没有,你可以通过 File - Open 在弹出的对话框中选择你的 Maven 工程路径进行打开。 打开 Maven 项目窗口。在 IDEA 的右边会有一个 Maven 项目的窗口,

    2024年02月02日
    浏览(70)
  • Intellij-idea 如何编译maven工程

    在 IntelliJ IDEA 中编译 Maven 工程是一个相对直接的过程。以下是基本步骤: 1. 打开或导入 Maven 项目 如果您已经有一个现有的 Maven 项目,可以直接在 IntelliJ IDEA 中打开它。选择 File Open,然后浏览到您的 Maven 项目文件夹,选择包含 pom.xml 的目录。 如果您是从现有的源代码导入

    2024年01月25日
    浏览(73)
  • 【Spring】Spring对IoC的实现

    根据 【动力节点】最新Spring框架教程,全网首套Spring6教程,跟老杜从零学spring入门到高级 以及老杜的原版笔记 https://www.yuque.com/docs/share/866abad4-7106-45e7-afcd-245a733b073f?# 《Spring6》 进行整理, 文档密码:mg9b Spring 相关文章整理汇总归纳于:https://www.yuque.com/u27599042/zuisie IoC 控制

    2024年02月15日
    浏览(36)
  • Spring笔记之Spring对IoC的实现

    控制反转是一种思想 控制反转是为了降低程序耦合度,提高程序扩展力,达到OCP原则,达到DIP原则。 控制反转,反转的是什么? 将对象的创建权力交出去,交给第三方容器负责 将对象和对象之间关系的维护权交出去,交给第三方容器负责 控制反转思想的实现方式:依赖注

    2024年02月14日
    浏览(37)
  • [SSM]Spring对IoC的实现

    目录 四、Spring对IoC的实现 4.1IoC控制反转 4.2依赖注入 4.2.1set注入 4.2.2构造注入 4.3set注入专题 4.3.1注入外部Bean 4.3.2注入内部Bean 4.3.3注入简单类型 4.3.4级联属性赋值 4.3.5注入数组 4.3.6注入List、Set、Map集合 4.3.7注入Properties 4.3.8注入null和空字符串 4.3.9注入的值中含有特殊符号 4.

    2024年02月16日
    浏览(32)
  • IOC使用Spring实现附实例详解

    目录 一、相关导读 1. Maven系列专栏文章 2. Mybatis系列专栏文章 3. Spring系列专栏文章 二、前言 Spring简介 Spring体系结构 三、Spring实现IOC 1. 创建Maven工程,引入对应依赖 2. 创建实体类,Dao接口及实现类 3. 编写xml配置文件 4. 测试从Spring容器获取对象 5. 测试结果 四、Spring容器类型

    2023年04月24日
    浏览(37)
  • IntelliJ IDEA软件内如何更新到最新版本

      IntelliJ IDEA软件内通过Help里面的update发现弹出来的框更新的版本并不是最新的版本,比如我选择用着的版本是2020年版本,最新版本是2023年版本,他弹出来更新的版本是2020的版本另外一个月份,那么怎么样才能更新到最新版本呢?   通过选择 Ignore This Update 来跳过这个

    2024年02月04日
    浏览(47)
  • spring6-实现简易版IOC容器

    我们都知道,Spring框架的IOC是基于Java反射机制实现的,下面我们先回顾一下java反射。 1、回顾Java反射 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调

    2024年02月08日
    浏览(44)
  • javaee spring 用注解的方式实现ioc

    spring核心依赖 spring配置文件

    2024年02月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包