首页 > 其他分享 >IOC入门

IOC入门

时间:2022-09-07 16:45:08浏览次数:59  
标签:容器 依赖 入门 DI 对象 dao IOC

2.3.2 IOC、IOC容器、Bean、DI

1.IOC(Inversion of Control)控制反转

(1)什么是控制反转呢?

使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。

  • 业务层要用数据层的类对象,以前是自己new的
  • 现在自己不new了,交给别人[外部]来创建对象
  • 别人[外部]就反转控制了数据层对象的创建权
  • 这种思想就是控制反转


别人[外部]指定是什么呢?继续往下学


(2)Spring和IOC之间的关系是什么呢?

  • Spring技术对IOC思想进行了实现
  • Spring提供了一个容器,称为IOC容器,用来充当IOC思想中的"外部"
  • IOC思想中的别人[外部]指的就是Spring的IOC容器

 

(3)IOC容器的作用以及内部存放的是什么?

  • IOC容器负责对象的创建、初始化等一系列工作,其中包含了数据层和业务层的类对象
  • 被创建或被管理的对象在IOC容器中统称为Bean
  • IOC容器中放的就是一个个的Bean对象


(4)当IOC容器中创建好service和dao对象后,程序能正确执行么?

  • 不行,因为service运行需要依赖dao对象
  • IOC容器中虽然有service和dao对象
  • 但是service对象和dao对象没有任何关系
  • 需要把dao对象交给service,也就是说要绑定service和dao对象之间的关系

像这种在容器中建立对象与对象之间的绑定关系就要用到DI:

2.DI(Dependency Injection)依赖注入

(1)什么是依赖注入呢?

在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

  • 业务层要用数据层的类对象,以前是自己new的
  • 现在自己不new了,靠别人[外部其实指的就是IOC容器]来给注入进来
  • 这种思想就是依赖注入


(2)IOC容器中哪些bean之间要建立依赖关系呢?

  • 这个需要程序员根据业务需求提前建立好关系,如业务层需要依赖数据层,service就要和dao建立依赖关系

介绍完Spring的IOC和DI的概念后,我们会发现这两个概念的最终目标就是:充分解耦,具体实现靠:

  • 使用IOC容器管理bean(IOC)
  • 在IOC容器内将有依赖关系的bean进行关系绑定(DI)
  • 最终结果为:使用对象时不仅可以直接从IOC容器中获取,并且获取到的bean已经绑定了所有的依赖关系.

 

2.3.3 核心概念小结


这节比较重要,重点要理解什么是IOC/DI思想、什么是IOC容器和什么是Bean:

(1)什么IOC/DI思想?

  • IOC:控制反转,控制反转的是对象的创建权
  • DI:依赖注入,绑定对象与对象之间的依赖关系

(2)什么是IOC容器?

  • Spring创建了一个容器用来存放所创建的对象,这个容器就叫IOC容器

(3)什么是Bean?

  • 容器中所存放的一个个对象就叫Bean或Bean对象

 

标签:容器,依赖,入门,DI,对象,dao,IOC
From: https://www.cnblogs.com/cuipengchong/p/16297470.html

相关文章

  • 逆向 | frida android hook 入门总结
    逆向|fridaandroidhook入门总结最近在备课,整理到这一块儿了,顺带就把以前的东西整理一下。比较好的参考文章:https://www.jianshu.com/p/0fa6138fafc9#hook重载函......
  • Java Servlet 入门: 问题系列:警告: Web应用程序[ROOT]似乎启动了一个名为[Thread-1]的
    问题:在Java 代码中开了一个线程,死循环定时运行。右键运行项目,再右键停目项目: 发现系统有提示警告:警告:Web应用程序[ROOT]似乎启动了一个名为[Thread-1]的线程,但......
  • 延宕执行,妙用无穷,Go lang1.18入门精炼教程,由白丁入鸿儒,Golang中defer关键字延迟调
    先行定义,延后执行。不得不佩服Golang设计者天才的设计,事实上,defer关键字就相当于Python中的try{...}except{...}finally{...}结构设计中的finally语法块,函数结束时强制......
  • Flink入门
    Flink快速上手1-创建一个Maven项目2-引入依赖版本根据自己的情况和需求进行更改<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/P......
  • Docker 入门指南
    Docker入门指南目录基础概念安装教程基本操作常用安装构建操作容器编排壹.基础概念什么是Docker?Docker是基于Go开发的应用容器引擎,属于Linux容器的一种封......
  • Linux 入门
    Linux入门LinuxLinux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思......
  • Syntegra 的合成数据 API 入门 | Syntegra
    Syntegra的合成数据API入门|SyntegraSyntegra的SyntheticDataAPI的目标是让数据科学家、分析工程师和产品开发人员更容易访问患者级别的医疗保健数据。直接在......
  • 基于AT89C51的入门
    首先我们需要将Proteus8Professional    KeiluVision4两个软件下载下来https://www.aliyundrive.com/s/maRxuVc7mfv提取码:70ms下载后进行安装  路径选下(......
  • Java零基础入门学习Day[2]
    了解Java的基本语法1.代码的书写格式每条功能执行语句的结尾都要加上';'严格区分大小写代码简洁美观,可读性强2.代码的注释单行注释  '//注释内容'    ......
  • Python爬虫入门笔记
    一、requests请求库requests安装:pipinstallrequestsrequest使用3步骤①导入模块②发送get请求,获取响应:response=requests.get(url)③从响应中获取数据#1.导......