Spring(13) IOC的工作流程

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

一、定义

IOC:全称是 Inversion Of Control,也就是控制反转,它的核心思想是把对象的管理权限交给容器。应用程序如果需要使用某个对象的实例,那么直接从 IOC 容器里面去获取就可以了。

传统应用程序 vs IOC控制反转:

Spring(13) IOC的工作流程,Spring,spring,java,后端

这种设计的好处在于降低了对象与对象之间的耦合性,使得程序的整个体系结构变得更加灵活。


二、Bean的声明方式

Spring 里面提供了很多方式去声明一个 Bean,比如说在 XML 配置文件里面通过 <bean> 标签、 @Service 注解、@Configuration 配置类中的 @Bean 注解去声明等等。

Spring(13) IOC的工作流程,Spring,spring,java,后端

Spring 在启动过程中会去解析这些 Bean,然后保存到 IOC 容器里面。


三、IOC的工作流程

Spring 中 IOC 的工作流程大致可以分为三个阶段:

  1. IOC 容器的初始化阶段: 这个阶段主要是根据程序里面定义的 XML 或者注解等 Bean 的声明方式,通过解析和加载后生成 BeanDefinition 实体,然后把 BeanDefinition 注册到 IOC 容器中。

    Spring(13) IOC的工作流程,Spring,spring,java,后端

    生成的 BeanDefinition 实体中会包含 Bean 的一些定义和基本属性。最后,把这个 BeanDefinition 保存到一个 Map 集合里面,从而去完成 IOC 的初始化。

    IOC 容器的作用就是对这些注册的 Bean 的定义信息进行处理和维护,这是 IOC 容器实现控制反转的核心。

  2. 完成 Bean 的初始化和依赖注入: 进入第二个阶段以后,这个阶段会做两件事:

    1)通过反射去针对没有设置 lazy-init 属性的单例 Bean 进行初始化;

    Spring(13) IOC的工作流程,Spring,spring,java,后端

    2)完成 Bean 的依赖注入。

  3. Bean 的使用: 通常我们会通过 @Autowired 这样一个注解,或者通过 BeanFactory.getBean() 从 IOC 容器里面去获取一个指定的 Bean 实例。

    Spring(13) IOC的工作流程,Spring,spring,java,后端

    另外,针对设置了 lazy-init 属性以及非单例 Bean 的实例化,是在每一次获取 Bean 对象的时候,调用 Bean 的初始化方法来完成实例化的。并且 Spring IOC 容器不会去管理这些 Bean。

整理完毕,完结撒花~ 🌻文章来源地址https://www.toymoban.com/news/detail-636767.html

到了这里,关于Spring(13) IOC的工作流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 深入理解JAVA垃圾收集器CMS,G1工作流程原理 GC流程图 什么社会触发Minor GC?触发MinorGC过程。Full GC 过程。

    JVM内存空间基础知识点(基于JDk1.8) 1.方法区:逻辑概念,元空间,方法区主要用于存储类的信息、常量池、方法数据、方法代码等。方法区逻辑上属于堆的一部分,但是为了与堆进行区分,通常又叫“非堆”。 2.程序计数器:程序计数器可以看作当前线程所执行的字节码的

    2024年04月25日
    浏览(39)
  • 【spring源码系列-02】通过refresh方法剖析IOC的整体流程

    Spring源码系列整体栏目 内容 链接地址 【一】spring源码整体概述 https://blog.csdn.net/zhenghuishengq/article/details/130940885 【二】通过refresh方法剖析IOC的整体流程 https://blog.csdn.net/zhenghuishengq/article/details/131003428 【三】xml配置文件启动spring时refresh的前置工作 https://blog.csdn.net/zhenghuishen

    2024年02月08日
    浏览(41)
  • TCP/IP协议工作原理与工作流程

    使用OSI模型来描述一个网络中的各个协议层,如下: TCP/IP协议,英文全称Transmission Control Protocol/Internet Protocol,包含了一系列构成互联网基础的网络协议,是Internet的核心协议。TCP/IP协议是一个协议簇,包含了应用协议、传输协议、网际互联协议和路由控制协议。如下图: 应

    2024年04月25日
    浏览(46)
  • 网络安全等级保护测评:工作流程及工作内容

    **一、** 网络安全等级保护测评过程概述 网络安全等级保护测评工作过程包括四个基本测评活动: 测评准备活动、方案编制活动、现场测评活动、报告编制活动 。而测评相关方之间的沟通与洽谈应贯穿整个测评过程。每一项活动有一定的工作任务。如下表。 01 基本工作流程

    2024年02月06日
    浏览(51)
  • AES工作流程

    工作流程 模式 1:加密 ⚫ 复位EN 重置AES模块 ⚫ 设置模式寄存器mode[1:0]=00,设置流数据处理模式寄存器CHMOD[1:0] ⚫ 写AES_KEYRx寄存器,CTR和CBC模式下写AES_IVRx寄存器 ⚫ 写EN=1,使能AES ⚫ 写AES_DINR 寄存器4次 ⚫ 等待CCF标志置起 ⚫ 从AES_DOUTR分4次读出加密结果 ⚫ 对于同一个key,重

    2024年02月01日
    浏览(46)
  • 软件测试工作流程

    流程体系介绍 在以往的项目工作中,我参与过,需求评审、测试计划制定、测试用例编写、测试用例执行、测试脚本编写、测试脚本的执行,进行回归测试、验收测试、编写阶段性测试报告等工作 需求分析,需求评审(RPD、产品原型图) 制定测试计划、评审测试计划、优化

    2024年02月05日
    浏览(42)
  • STM32 工作流程

    工作流程: 上电后,芯片复位启动 MCU通过指令/数据总线从FLASH中读取指令或数据,配合解析执行,然后再通过RAM和通用寄存器(R0~R12的内部寄存器)处理可变数据 根据执行的指令,配置和操作外设的寄存器,从而驱动对应的外设实现具体的功能 配合上层组合逻辑,结合外设

    2024年02月11日
    浏览(38)
  • RabbitMQ工作流程详解

    (1)生产者连接RabbitMQ,建立TCP连接(Connection),开启信道(Channel) (2)生产者声明一个Exchange (交换器),并设置相关属性,比如交换器类型、是否持久化等 (3)生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等 (4)生产者通过bindingKey (绑定Key) 将交换器

    2024年02月13日
    浏览(43)
  • 机器学习工作流程

    机器学习的定义 机器学习的工作流程 获取到的数据集的特性 1、什么是机器学习 机器学习是 从数据中自动分析获得模型,并利用模型对未知数据进行预测。 2、机器学习工作流程 机器学习工作流程总结 1、获取数据 2、数据基本处理 3、特征工程 4、机器学习(模型训练)

    2024年02月04日
    浏览(62)
  • 简述springMVC工作流程

    Spring MVC是一个基于Java的开源MVC框架,用于构建Web应用程序。它通过将应用程序分解为模型(Model)、视图(View)和控制器(Controller)三个部分,以提高应用程序的可维护性和可扩展性。以下是Spring MVC的基本工作流程: 客户端发送请求: 客户端通过浏览器或其他客户端发送

    2024年02月05日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包