首页 > 其他分享 >造轮计划 IOC

造轮计划 IOC

时间:2023-05-19 17:44:27浏览次数:45  
标签:容器 依赖 实现 Config 配置 造轮 计划 IOC

IOC 实现

IOC 的理念和实现
理解 IOC

控制反转(Inversion of Control,IoC)是一种设计模式,它将对象的创建和对象之间的依赖关系的管理从应用程序代码中转移到外部容器或框架中。这种模式的目的是减少应用程序代码的耦合度,使代码更加灵活和可维护。

实现 IOC

实现IOC的方式有很多种,其中最常见的方式是使用依赖注入(Dependency Injection,DI)。依赖注入是一种将依赖关系从一个对象传递到另一个对象的技术。它通过将依赖关系的创建和管理委托给外部容器或框架来实现IOC。

下面是IOC和DI的区别总结:

IOC DI
控制反转 依赖注入
将对象的创建和对象之间的依赖关系的管理从应用程序代码中转移到外部容器或框架中 将依赖关系的创建和管理委托给外部容器或框架来实现IOC
减少应用程序代码的耦合度,使代码更加灵活和可维护 将依赖关系从一个对象传递到另一个对象的技术
个人总结

IOC 理念:引入第三方容器统一管理依赖关系

IOC 实现:依赖注入

如果希望实现 IOC ,则最起码要实现第三方容器(配置机制)和依赖注入(获取机制),除此之外,还要实现依赖管理机制

Spring IOC 机制

回顾 Spring 的三种配置-获取机制:setBean + getBean

  • XML 配置
  • Annotation in Code + Thin Config 配置(注解配置)
  • Annotation in Config + Fat Config 配置(Java 类配置)

抽象出来的流程都是

graph LR 被调类信息 --读入--> 第三方容器 --注解/getBean--> 调用者

实现时想起先前的使能课程有讲到用等效于 XML 的 properties 作为配置文件,实现简易 IOC 的流程,复现了一遍,约等于实现了 XML 配置的实现方法

广义来说 Config 配置都要与注解相结合,太麻烦了,本质上最终都会变成 HashMap,直接用 HashMap 实现最简单的 Config 配置类信息

严格上说,这里并不能说完全实现了 IOC 容器,只是实现了基础的配置-获取机制

层流分析

IOC 结构
  • config:Java 类配置实现
    • BeanFactoryByConfig:BeanFactory By 内部配置类配置
    • Config:配置类
  • entity:实体
    • User
  • properties:配置文件实现
    • BeanFactoryByProperties:BeanFactory By 外部配置文件配置
    • beans.properties:配置文件
IOC 流程
  1. 配置:本质上是获取一个 HashMap 等价物,BeanName 作为 Key,类的全限定类名作为 Value
  2. 获取:利用 getBean 方法,通过 BeanName 获取一个对象

源码地址

此处只实现了配置文件和配置类两种配置方式,注解配置融入到 AOP 造轮计划中

https://github.com/Ba11ooner/IOC_Demo

标签:容器,依赖,实现,Config,配置,造轮,计划,IOC
From: https://www.cnblogs.com/ba11ooner/p/17415874.html

相关文章

  • 从AWR快照中固定执行计划
    Troubleshooting/resolutionf18mgmxm76kdr–sql_idprovidebyuserchecksqlplanhistorycolbtimefora25selecta.sql_id,a.plan_hash_value,to_char(begin_interval_time,'dd-mon-yyhh24:mi')btime,executions_deltaexecutions,round(ELAPSED......
  • spring5中IOC容器(底层原理1-3)
    什么是IOC1.控制反转:把对象创建和对象之间的调用过程,交给spring进行管理2.使用IOC目的:为了耦合度降低IOC底层原理xml解析,工厂模式,反射 画图讲解IOC底层原理  IOC过程:  IOC接口1.IOC思想基于IOC容器完成,IOC容器底层就是对象工厂2.Spring提供IOC容......
  • 华普物联HP-IOCAT-088 CAT1/4G网络IO控制器
    产品概述HP-0CAT-088CAT.1/4G网络10控制器,实现数字信号以及RS485设备数据的采集并通过CAT.1/4G网络进行远程管理控制;支持8路继电器输出、8路输入,支持50CKET连接远程服务器,支持主动上报功能;遵循华普云主动上报协议;支持两种工作模式:主机模式、从机模式,主机模式支持RS485级联......
  • Java学习计划
    复习计划及学习网站的时间表如下所示:日期科目学习网站1月1日基本语法和变量类型CodecademyJava课程1月4日运算符和控制语句CourseraJava程序设计1月7日数组、集合和泛型UdemyJava基础课程1月10日类与对象PluralsightJava课程1月13日继承、抽象类......
  • 2023年的计划 以及2024年
    2023年的话一个个人ProfileWebsite[Vue3]项目A[Nuxtjs]项目B[Vue3]读完【认知觉醒】后端部署在亚马逊云的EC2上  2024年项目C[Nextjs]项目D[Reactjs]项目E[Reactjs]AWSDeveloperCertificate2025年寻找一份新工作的准备个人CVEnglish/Japanese......
  • Ioc DI bean实例化
    Ioc(控制反转)使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想为控制反转。Spring实现了Ioc思想,Spring提供了一个容器,成为Ioc容器,用来充当Ioc思想中的外部。Ioc容器可以管理大量对象的创建和初始化,管理的这些对象叫做Bean。 ......
  • 1335. 工作计划的最低难度
    你需要制定一份 d 天的工作计划表。工作之间存在依赖,要想执行第 i 项工作,你必须完成全部 j 项工作( 0<=j<i)。你每天至少 需要完成一项任务。工作计划的总难度是这 d 天每一天的难度之和,而一天的工作难度是当天应该完成工作的最大难度。给你一个整数数组 jobDiffi......
  • AI智慧安监平台EasyCVR调用编辑通道接口,录像计划却被删除是什么原因?
    EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。为了便于用户集成与二次开发的需求,我们也提供了丰富的API接......
  • SpringIOC和SpringAOP
    作为一个Spring使用者条件:拥有深入的Spring框架知识和开发经验,能够熟练地运用Spring框架来构建复杂的应用程序。了解Spring框架的核心概念和设计思想,如控制反转(IoC)、依赖注入(DI)、面向切面编程(AOP)等,并能灵活运用这些概念来解决实际问题。熟悉Spring框架中各个模块的功能和用法,如......
  • Explain执行计划key_len详解
    我们在使用Explain查看SQL执行计划时,其中有一列为key_kenEXPLAINselect*FROMuserWHEREid=1;key_len表示使用的索引长度,key_len可以衡量索引的好坏,key_len越小索引效果越好,那么key_len的长度是如何计算的?常见的列类型长度计算:CREATETABLE`user`(`id`bigint......