千家信息网

Spring之什么是IoC

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"Spring之什么是IoC",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring之什么是IoC"吧!Spring Hello Wor
千家信息网最后更新 2026年11月03日Spring之什么是IoC

本篇内容主要讲解"Spring之什么是IoC",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Spring之什么是IoC"吧!

Spring Hello World 回顾

在Hello Spring实例中我们定义了类

public class HelloSpring {     private String name="hello";     HelloSpring(){      System.out.println("Hello Spring");     }      public String getName() {         return this.name ;     }         public void setName(String name) {         this.name = name;     } }

配置文件中的配置信息如下:

调用HelloSpring中的getName方法代码如下:

public static void main(String[] args) { ApplicationContextcontext = new ClassPathXmlApplicationContext("beans1.xml"); HelloSpringhello = (HelloSpring) context.getBean("hellospring");            System.out.println(hello.getName());         } }

运行结果如下:

Hello Spring //构造函数中输出的值  Hello //getName方法中输出的值

详细可以参考文章 测试同学从0到1上手Spring

IOC解读

我们可以看到spring并没有new 实例的过程,但是完成了实例化的操作,并成功地调用了getName方法。这就是Spring中的控制反转技术(IoC)。

Spring通过一种称作控制反转(Inversion of Control —IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。也就是说Spring控制了对象的生成,应用程序不再需要主动创建对象了!

我们通常说的SpringIoC,实际上是指Spring框架提供的IoC容器实现(IoC Container)。

Spring 的 IoC 容器中发生的事情其实也很简单,总结下来即两个阶段:

采摘和收集"咖啡豆"(bean)

研磨和烹饪咖啡

第一个阶段可以认为是构建和收集 bean 定义的阶段,在这个阶段中,我们可以通过 XML 或者 Java 代码的方式定义一些 bean,然后通过手动组装或者让容器基于某些机制自动扫描的形式,将这些 bean 定义收集到 IoC 容器中。我们通常通过在xml文件中定义bean,然后容器再将这些bean收集到IoC容器中。当第一阶段工作完成后,我们可以先暂且认为 IoC 容器中充斥着一个个独立的 bean,它们之间没有任何关系。但实际上,它们之间是有依赖关系的,所以,IoC容器在第二阶段要干的事情就是分析这些器已经在 IoC 容器之中的 bean,然后根据它们之间的依赖关系先后组装它们。如果 IoC 容发现某个 bean 依赖另一个 bean,它就会将这另一个 bean 注入给依赖它的那个 bean,直到所有 bean 的依赖都注入完成,所有 bean 都"整装待发",整个 IoC 容器的工作即算完成。

IOC基本运行流程如下图所示:

Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。

IOC深入理解

IoC容器

实现了IoC思想的容器就是IoC容器。IoC容器功能包括:实例化、初始化组件、装配组件依赖关系、负责组件生命周期管理。

IoC容器特点

无需主动new对象;而是描述对象应该如何被创建即可。IoC容器帮你创建,即被动实例化;

不需要主动装配对象之间的依赖关系,而是描述需要哪个服务(组件),IoC容器会帮你装配(即负责将它们关联在一起),被动接受装配;

IoC是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减少类与类之间依赖的设计原则。

理解IoC容器问题关键:控制的哪些方面被反转了?

1、谁控制谁?为什么叫反转? IoC容器控制,而以前是应用程序控制,所以叫反转

2、控制什么?控制应用程序所需要的资源(对象、文件……)

3、为什么控制?解耦组件之间的关系

4、控制的哪些方面被反转了?程序的控制权发生了反转:从应用程序转移到了IoC容器。

使用IoC容器开发需要改变的思路

1、应用程序不主动创建对象,但要描述创建它们的方式。

2、在应用程序代码中不直接进行服务的装配,但要配置文件中描述哪一个组件需要哪一项服务。容器负责将这些装配在一起。

最通俗的解释

所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

到此,相信大家对"Spring之什么是IoC"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

容器 控制 对象 应用 程序 之间 应用程序 组件 装配 实例 阶段 主动 服务 配置 东西 文件 方式 方法 运行 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 北京路客互联网科技有限公司 中国互联网科技股 科技与互联网发展 互联网金融 金融科技 互联网科技公司官网 云电互联网科技 互联网金融科技平台 电子科技大学互联网 撒么互联网科技公司 济南华为互联网科技产业总部基地 苏州五指互联网络科技有限 阿大互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 天津腾达互联网科技有限公司 为客找房互联网科技公司怎么样 元气玛特互联网科技公司是外包吗 银川新华互联网科技学校是国营吗 福仕德教育科技互联网 互联网科技创新创业项目 互联网科技与金融科技 期待互联网科技 有木互联网科技 上海万想互联网科技 互联网科技咨询 甘肃拓世互联网科技有限公司 晓花互联网科技有限公司网址 黑云互联网科技有限公司 万物互联网智能科技 杭州科技互联网公司有哪些
0