spring项目概念-IOCDI
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相关推荐
- spring项目概念-BeanFactoryApplicationContext
看一下,接下来又是一个概念性的东西,不过这个概念就比较具体一些了,DI和IOC是属于思想性质的,applicationContext和BeanFactory,简单说一下这个对象,再看这两个对象,咱们先 ...
- 在Eclipse中使用Maven构建Spring项目
最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例. maven简单介绍 maven是构建工具,也是构建管理工具.ant只是构建工具 ...
- JavaSE、JavaEE与Spring的概念和异同点剖析
JavaSE.JavaEE与Spring的概念和异同点剖析 什么是JavaSE JavaSE是Java的核心,也就是 Java的主要部分.用于开发桌面应用程序和基于web的应用程序.它提供了从基本对象 ...
- Spring入门(四):使用Maven管理Spring项目
让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...
- Spring Cloud概念+案例(eureka注册+拉取、ribbon负载均衡+重试)、netfix各组件介绍【上】
Spring Cloud概念+案例(断路器)[下] https://blog.csdn.net/LawssssCat/article/details/104632719 [⭐️⭐️⭐️] Spring ...
- Spring入门详解(一)如何配置一个简单的spring项目
关于spring的一些概念,网上已经有很多的说明,本系列不会做太多的描述,重心在如何配置上. 一.准备工作 1.安装JDK,配置环境.(本来不想写这条的-想了想,还是写上) 2.下载开发包 Sprin ...
- SSM Chapter 05 Spring 核心概念
SSM Chapter 05 Spring 核心概念 笔记 本章目标: 理解Spring IoC的原理 掌握Spring IoC的配置 理解Spring AOP的原理 掌握Spring AOP的配置 ...
- Spring框架学习笔记(1) ---[spring框架概念 , 初步上手使用Spring , 控制反转 依赖注入初步理解 ]
spring官网 -->spring官网 spring5.3.12–>spring-framework 在线文档 --> Spring 5.3.12 文章目录 1.Spring概论 ...
- spring 项目中集成 Protocol Buffers 示例
http://blog.csdn.net/fangzhangsc2006/article/details/8687388 本文适用于了解spring框架,同时想在spring项目中使用Protocol ...
最新文章
- nginx的配置和优化(隐藏版本号、gzip、expires、防盗链......等)
- vs2010下release版本调试设置
- OpenMP入门教程(一)hello world
- 可视化篇(二)———使用matplotlib绘制常用3D图形及案例
- Querying an unbounded table ‘myhive.db1.datagen‘ in batch mode is not allowed
- Springcloud 引导上下文
- php qmqp 没有方法,CentOS7 php 安装 amqp扩展
- MySQL占用系统进程_MySQL的Sleep进程占用大量连接解决方法
- 苏州银行对公定存通项目
- (01)OpenGL es中只在指定区域渲染view
- 表格超出_?那些年Word表格你肯定踩过的坑
- Facebook原型网站FaceMash域名拍得3万美元
- 台式计算机能不能安装蓝牙驱动,几个方法教你台式电脑怎么安装蓝牙
- linux系统部署ffmpeg视频转码环境及使用方法
- Windows系统的电脑有可以删除的文件夹(个人笔记)
- 微软应用商店打不开代码: 0x80131500
- 星辰变最后鸿蒙,星辰变最后的结局是什么
- 企业即时通讯软件有哪些功能?对企业有什么帮助?
- CentOS 之 openssl-devel 安装
- 全志lichee的pack命令
热门文章
- 实现GridView的插入功能
- Mobile RDA 同步数据库的类--转
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- 《C++必知必会》读书笔记2
- Lintcode99 Reorder List solution 题解
- [翻译]应用程序池和应用程序域的区别
- (动态,静态)(解释,编译)(强类型,弱类型)
- 看起来很美 VS. 是你来检阅我的忧伤了吗?
- mysql 允许其他主机访问权限_允许其他主机访问本机MySQL
- linux windows爆音,升级Windows 10后 部分情况下有爆音,杂音,音频卡顿现象