IOC和DI,IOC和DI这两个概念,这两个概念其实特别的简单,可以说打我们学JAVA以来,最简单的思想了,IOC这三个字母,全写是Inverse Of Control,翻译过来就是,反转控制,IOC反转控制是啥意思呢,首先定义上来讲,将我们创建对象的方式翻转了,以前对象的创建,是由我们开发人员自己维护,包括依赖关系,也是自己注入,这我们举个例子,例如咱们在action当中,需要service,那你us = new UserService,这是不是咱们自己创建的,那你看action,他是不是需要这个Service,那是不是咱们自己new出来的,那Service又需要啥啊,Service是不是也需要DAO提供基础的数据库操作,那咱们也是需要自己new出来,放到Service里面去,而你使用Spring的话,使用了Spring之后,他这种方式会反转,以前是我们自己创建对象,给咱们的程序,而现在使用Spring之后,对象的创建,以及对象中的依赖关系,像Action需要Service,Service需要DAO,依赖关系,可以由咱们的Spring完成创建,Spring说白了就是一个容器,完成创建以及注入,由自己创建,反转给了Spring,所以所谓的反转控制,反转的是什么呢,反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序,括号Spring,就这么点事,没有深意,字面意思就可以了,由我们自己创建,变成由程序帮我们创建,这就是IOC

然后接下来再看DI,实际上DI概念比IOC概念还要再小一些,比IOC的概念还要小一些,DI的全写是Dependecy Injection,翻译过来就是依赖,后面的Injection就是注入,那你看这个名字你就知道,他这个范围就要小一些,依赖注入说白了,就是实现IOC思想需要咱们的DI做支持,啥叫注入呢,简单的来说,这个注入类型,注入方式,注入方式的话,咱们Spring当中,可以通过Set方法注入,然后你也可以通过构造方法注入,甚至还有一个不推荐的,属性直接字段注入,直接注入到属性字段当中,然后再从注入的类型来说,Spring支持值类型注入,然后咱们的Spring还支持引用类型注入,值类型注入和引用类型注入啥意思,比如刚才咱们写的user对象,他有name和age两个属性,比如user对象创建出来以后,他有名字比较叫Tom,还有年龄叫18,实际上Tom和18这个值,我可以在配置文件里面进行配置,Spring会帮我配置一个值,交给咱们这个属性,我可以通过配置,让Spring创建出来之后,就是名叫Tom,age就是18,那刚才我说的这个例子,就是值类型注入,说白了就是8种基本数据类型,比如User对象当中新加一个属性,叫做地址属性,但是地址属性给他封装了,地址比如是哪一个国家,哪一个街道,可能我那对象来表示了,对象创建好,注入到user当中,其实咱们线程2的例子,咱们的Service会需要DAO,Action需要Service,那到时候咱们玩的时候,DAO注入到Service,Service注入到Action,那这个就叫做引用类型注入了,将对象注入,将依赖的对象注入,注入的方式,注入的时候Spring直接通过set注入,这个都不用解释了,也可以声明一个构造,通过构造也可以完成注入,还有一种不推荐的字段,字段是跳过get/set方法,直接对私有属性进行注入,这些都是Spring支持的依赖注入的方法,所以实际上依赖注入可以看成是一个实际的技术了,是给IOC提供支持了,换句话讲,反转控制要想实现,是不是离不开依赖注入,依赖注入实现

依赖注入你可以看成是一个技术,依赖注入技术,然后这个技术对IOC,提供了技术上的支撑,只有实现DI技术,才能实现IOC思想,因为你要创建一个对象的话,这个对象或多或少会和其他对象有一个依赖关系,你需要完成注入,那IOC和DI就完事了,看文档说的更短

IOC讲对象的创建权交给Spring,DI需要有IOC的环境,DI的实现就是为了完成IOC思想的,Spring将类的属性设置进去,那这又是咱们的理念

spring项目概念-IOCDI相关推荐

  1. spring项目概念-BeanFactoryApplicationContext

    看一下,接下来又是一个概念性的东西,不过这个概念就比较具体一些了,DI和IOC是属于思想性质的,applicationContext和BeanFactory,简单说一下这个对象,再看这两个对象,咱们先 ...

  2. 在Eclipse中使用Maven构建Spring项目

    最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...

  3. JavaSE、JavaEE与Spring的概念和异同点剖析

    JavaSE.JavaEE与Spring的概念和异同点剖析 什么是JavaSE JavaSE是Java的核心,也就是 Java的主要部分.用于开发桌面应用程序和基于web的应用程序.它提供了从基本对象 ...

  4. Spring入门(四):使用Maven管理Spring项目

    让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...

  5. Spring Cloud概念+案例(eureka注册+拉取、ribbon负载均衡+重试)、netfix各组件介绍【上】

    Spring Cloud概念+案例(断路器)[下] https://blog.csdn.net/LawssssCat/article/details/104632719 [⭐️⭐️⭐️] Spring ...

  6. Spring入门详解(一)如何配置一个简单的spring项目

    关于spring的一些概念,网上已经有很多的说明,本系列不会做太多的描述,重心在如何配置上. 一.准备工作 1.安装JDK,配置环境.(本来不想写这条的-想了想,还是写上) 2.下载开发包 Sprin ...

  7. SSM Chapter 05 Spring 核心概念

    SSM Chapter 05 Spring 核心概念 笔记 本章目标: 理解Spring IoC的原理 掌握Spring IoC的配置 理解Spring AOP的原理 掌握Spring AOP的配置 ...

  8. Spring框架学习笔记(1) ---[spring框架概念 , 初步上手使用Spring , 控制反转 依赖注入初步理解 ]

    spring官网 -->spring官网 spring5.3.12–>spring-framework 在线文档 --> Spring 5.3.12 文章目录 1.Spring概论 ...

  9. spring 项目中集成 Protocol Buffers 示例

    http://blog.csdn.net/fangzhangsc2006/article/details/8687388 本文适用于了解spring框架,同时想在spring项目中使用Protocol ...

最新文章

  1. nginx的配置和优化(隐藏版本号、gzip、expires、防盗链......等)
  2. vs2010下release版本调试设置
  3. OpenMP入门教程(一)hello world
  4. 可视化篇(二)———使用matplotlib绘制常用3D图形及案例
  5. Querying an unbounded table ‘myhive.db1.datagen‘ in batch mode is not allowed
  6. Springcloud 引导上下文
  7. php qmqp 没有方法,CentOS7 php 安装 amqp扩展
  8. MySQL占用系统进程_MySQL的Sleep进程占用大量连接解决方法
  9. 苏州银行对公定存通项目
  10. (01)OpenGL es中只在指定区域渲染view
  11. 表格超出_?那些年Word表格你肯定踩过的坑
  12. Facebook原型网站FaceMash域名拍得3万美元
  13. 台式计算机能不能安装蓝牙驱动,几个方法教你台式电脑怎么安装蓝牙
  14. linux系统部署ffmpeg视频转码环境及使用方法
  15. Windows系统的电脑有可以删除的文件夹(个人笔记)
  16. 微软应用商店打不开代码: 0x80131500
  17. 星辰变最后鸿蒙,星辰变最后的结局是什么
  18. 企业即时通讯软件有哪些功能?对企业有什么帮助?
  19. CentOS 之 openssl-devel 安装
  20. 全志lichee的pack命令

热门文章

  1. 实现GridView的插入功能
  2. Mobile RDA 同步数据库的类--转
  3. JDK自带VM分析工具jps,jstat,jmap,jconsole
  4. 《C++必知必会》读书笔记2
  5. Lintcode99 Reorder List solution 题解
  6. [翻译]应用程序池和应用程序域的区别
  7. (动态,静态)(解释,编译)(强类型,弱类型)
  8. 看起来很美 VS. 是你来检阅我的忧伤了吗?
  9. mysql 允许其他主机访问权限_允许其他主机访问本机MySQL
  10. linux windows爆音,升级Windows 10后 部分情况下有爆音,杂音,音频卡顿现象