ioc

spring依赖注入和控制反转

烈酒焚心 提交于 2020-03-08 09:23:22
2017-11-15 学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一、分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么 Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。 在Java开发中, Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下: ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建; 谁控制谁?当然是IoC 容器控制了对象;控制什么

依赖注入和控制反转

浪尽此生 提交于 2020-03-08 09:22:43
概念 IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么? 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)? 依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。 参与者都有谁:一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 又要名词解释一下,某个对象指的就是任意的、普通的对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。 谁依赖于谁:当然是某个对象依赖于IoC/DI的容器 为什么需要依赖:对象需要IoC/DI的容器来提供对象需要的外部资源 谁注入于谁:很明显是IoC/DI的容器 注入 某个对象 到底注入什么:就是注入某个对象所需要的外部资源 谁控制谁:当然是IoC/DI的容器来控制对象了 控制什么:主要是控制对象实例的创建 为何叫反转:反转是相对于正向而言的,那么什么算是正向的呢?考虑一下常规情况下的应用程序

【好文转帖】控制反转(IOC)和依赖注入(DI)的区别

你说的曾经没有我的故事 提交于 2020-03-08 09:06:49
IOC inversion of control 控制反转 DI Dependency Injection 依赖注入 要理解这两个概念,首先要搞清楚以下几个问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么? 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)? 依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。 (1)参与者都有谁: 一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。 (2)谁依赖于谁: 当然是某个对象依赖于IoC/DI的容器 (3)为什么需要依赖: 对象需要IoC/DI的容器来提供对象需要的外部资源 (4)谁注入于谁: 很明显是IoC/DI的容器 注入 某个对象 (5)到底注入什么: 就是注入某个对象所需要的外部资源 (6)谁控制谁: 当然是IoC/DI的容器来控制对象了 (7)控制什么: 主要是控制对象实例的创建 (8)为何叫反转:

依赖注入&控制反转

假装没事ソ 提交于 2020-03-08 09:05:10
IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么? 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)? 依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。 (1)参与者都有谁: 一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。 (2)谁依赖于谁: 当然是某个对象依赖于IoC/DI的容器 (3)为什么需要依赖: 对象需要IoC/DI的容器来提供对象需要的外部资源 (4)谁注入于谁: 很明显是IoC/DI的容器 注入 某个对象 (5)到底注入什么: 就是注入某个对象所需要的外部资源 (6)谁控制谁: 当然是IoC/DI的容器来控制对象了 (7)控制什么: 主要是控制对象实例的创建 (8)为何叫反转:

依赖注入和控制反转

故事扮演 提交于 2020-03-08 09:04:50
IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么? 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)? 依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。 (1)参与者都有谁: 一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。 (2)谁依赖于谁: 当然是某个对象依赖于IoC/DI的容器 (3)为什么需要依赖: 对象需要IoC/DI的容器来提供对象需要的外部资源 (4)谁注入于谁: 很明显是IoC/DI的容器 注入 某个对象 (5)到底注入什么: 就是注入某个对象所需要的外部资源 (6)谁控制谁: 当然是IoC/DI的容器来控制对象了 (7)控制什么: 主要是控制对象实例的创建 (8)为何叫反转:

依赖注入和控制反转

旧巷老猫 提交于 2020-03-08 09:04:08
IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么? 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)? 依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。 (1)参与者都有谁: 一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比 如:对象需要的其它对象、或者是对象需要的文件资源等等。 (2)谁依赖于谁: 当然是某个对象依赖于IoC/DI的容器 (3)为什么需要依赖: 对象需要IoC/DI的容器来提供对象需要的外部资源 (4)谁注入于谁: 很明显是IoC/DI的容器 注入 某个对象 (5)到底注入什么: 就是注入某个对象所需要的外部资源 (6)谁控制谁: 当然是IoC/DI的容器来控制对象了 (7)控制什么: 主要是控制对象实例的创建 (8)为何叫反转:

依赖注入和控制反转

非 Y 不嫁゛ 提交于 2020-03-08 09:03:40
依赖注入和控制反转 IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么? 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)? 依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。 (1)参与者都有谁: 一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。 (2)谁依赖于谁: 当然是某个对象依赖于IoC/DI的容器 (3)为什么需要依赖: 对象需要IoC/DI的容器来提供对象需要的外部资源 (4)谁注入于谁: 很明显是IoC/DI的容器 注入 某个对象 (5)到底注入什么: 就是注入某个对象所需要的外部资源 (6)谁控制谁: 当然是IoC/DI的容器来控制对象了 (7)控制什么: 主要是控制对象实例的创建 (8

依赖注入和控制反转

谁说我不能喝 提交于 2020-03-08 09:03:04
热 1 吴鹏建 2010-07-26 12:20 [顶]3G移动--Android开发工程师全能班 看到一个对这个概念很好诠释的帖子,特转发过来供大家一起学习 转载地址 http://www.iteye.com/topic/692793 IoC——Inversion of Control 控制反转 DI——Dependency Injection 依赖注入 要想理解上面两个概念,就必须搞清楚如下的问题: 参与者都有谁? 依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么? 控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)? 依赖注入和控制反转是同一概念吗? 下面就来简要的回答一下上述问题,把这些问题搞明白了,IoC/DI也就明白了。 (1)参与者都有谁: 一般有三方参与者,一个是某个对象;一个是IoC/DI的容器;另一个是某个对象的外部资源。 又要名词解释一下,某个对象指的就是任意的、普通的Java对象; IoC/DI的容器简单点说就是指用来实现IoC/DI功能的一个框架程序;对象的外部资源指的就是对象需要的,但是是从对象外部获取的,都统称资源,比如:对象需要的其它对象、或者是对象需要的文件资源等等。 (2)谁依赖于谁: 当然是某个对象依赖于IoC/DI的容器 (3)为什么需要依赖: 对象需要IoC/DI的容器来提供对象需要的外部资源 (4

控制反转(Ioc)和依赖注入(DI)整理(二)(含代码示例)

﹥>﹥吖頭↗ 提交于 2020-03-08 09:02:36
既然说在控制反转中获取资源的过程叫做依赖注入,那么这里代码实现也是专注于依赖注入。IoC实现的方式由两种: 依赖获取和依赖注入。 接下来就细看依赖注入和依赖获取。 三 . 依赖注入背景及定义 (http://blog.csdn.net/commandbaby/article/details/51578699) 3.1. 背景 随着面向对象分析与设计的发展,一个良好的设计,核心原则之一就是将变化隔离,使得变化部分发生变化时,不变部分不受影响(OCP)。为了做到这一点,要利用面向对象中的多态性,使用多态性后,客户类不再直接依赖服务类,而是依赖一个抽象的接口,这样,客户类就不能在内部直接实例化具体的服务类。但是,客户类在运行中又客观需要具体的服务类提供服务,因为接口是不能实例化去提供服务的。就产生了“客户类不准实例化具体服务类”和“客户类需要具体服务类”这样一对矛盾。为了解决这个矛盾,开发人员提出了一种模式:客户类定义一个注入点,用与服务类的注入,而客户类的客户类负责根据情况,实例化服务类,注入到客户类中,从而解决了这个矛盾。 定义: 是这样一个过程:由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或者专门负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。

控制反转 & Ioc创建对象的基础方式

半城伤御伤魂 提交于 2020-03-07 20:41:37
控制反转———— 控制:谁来控制对象的创建 传统应用程序对象是由程序本身控制创建的,使用Spring后,对象是由Spring来控制创建的(经由xml文件配置) 反转:程序本身不再创建对象,而是反过来被动的接受对象(getBean(String id)) 依赖注入:就是利用set方法来进行注入的 所以,Ioc(控制反转)其实就是:对象由Spring来创建,管理,装配! Ioc创建对象的方式(xml装配bean) 使用无参构造创建对象,然后调用set方法(底层) <bean id="user" class="com.woshi.pojo.User"> <property name="name" value="张三"></property> </bean> 使用构造器,利用下标索引赋值( 索引从0开始 ,存在歧义风险,类型正确的情况下可能把值付错) <bean id="user2" class="com.woshi.pojo.User"> <constructor-arg index="0" value="李四"></constructor-arg> </bean> 使用构造器,通过参数类型赋值(存在歧义风险,如果由同类型的成员变量,会按顺序为他们赋值,提供的多余构造器需要的,会报错,少于没事,会赋给null, 要是涉及到基础数据类型就会报错 ) <bean id="user3"