依赖注入的前提:

有IOC的环境,也就是将必须对象的创建权交给了Spring.

DI 介绍

Dependency Injection 依赖注入.需要有IOC 的环境,Spring 创建这个类的过程中,Spring 将类的依赖的属性设置进去.

IOC与DI的的区别:

IOC:  控制反转,将类的对象的创建交给Spring类管理创建. 
DI:    依赖注入,将类里面的属性在创建类的过程中给属性赋值. 
DI和IOC的关系: DI不能单独存在,DI需要在IOC的基础上来完成.

这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现,使用接口的引用调用的方法,永远不需要改变

举一个栗子:

写个接口,说咱们购物去~

public interface IShopping {
void drive();
String Money();
}

在实现它两下:有钱人购物,没钱人购物     - -!这栗子举的

public class RichMan implements IShopping{
@Override
public void drive() {
System.out.println("Drive By Benz");
} @Override
public String Money() {
System.out.println("lot`s of money");
return "10000";
}
}
public class PoorGuy implements IShopping{
@Override
public void drive() {
System.out.println("take a walk!");
} @Override
public String Money() {
System.out.println("nothing");
return "1";
}
}

然后我们出去玩,顺便shopping一下吧~

public class Play {

    private IShopping shoppingSomething;

  //使用构造方法,将实现传入
public Play(IShopping shoppingSomething){ this.shoppingSomething = shoppingSomething;
} public void withgirlFriend(){
shoppingSomething.drive();
shoppingSomething.Money();
}
}

将想用的实现方式,用容器注入进来,这里就模拟下下怎么注入:

public class Containner {

    public Play getShopping(){
return new Play(new RichMan());
}
}

测试一下:

public static void main(String[] args) {
Containner containner = new Containner();
Play play = containner.getShopping();
play.withgirlFriend();
}

结果是:

Drive By Benz
lot`s of money

如果再依赖注入的配置时,配置为穷人的实现,那我们的代码都不用变,结果就会改变~

Spring中IOC与DI的的区别的更多相关文章

  1. 对Spring中IOC和DI的理解

    前几篇讲了Spring中IOC和DI的用法,本篇应该放到三篇之前,但一直没有想到好的讲解方式,后参考https://blog.csdn.net/luoyepiaoxue2014/article/det ...

  2. JavaWeb_(Spring框架)Spring中IoC与DI概念入门

    Spring是于2003 年兴起的一个轻量级的Java 开源框架,它由Rod Johnson创建.传统J2EE应用的开发效率低,Spring作为开源的中间件,提供J2EE应用的各层的解决方案,Spri ...

  3. Spring中IOC的理解

    Spring中IOC的理解 1.什么是IOC? (1)控制反转.把对象创建和对象间的调用过程交给Spring进行管理. (2)使用IOC的目的:为了耦合度降低. 2.IOC底层原理? (1)xml解析 ...

  4. 面试突击73:IoC 和 DI 有什么区别?

    IoC 和 DI 都是 Spring 框架中的重要概念,就像玫瑰花与爱情一样,IoC 和 DI 通常情况下也是成对出现的.那 IoC 和 DI 什么关系和区别呢?接下来,我们一起来看. 1.IoC 介 ...

  5. spring的IOC,DI及案例详解

    一:spring的基本特征 Spring是一个非常活跃的开源框架:它是一个基于Core来架构多层JavaEE系统的框架,它的主要目的是简化企业开发.Spring以一种非侵入式的方式来管理你的代码,Sp ...

  6. 总结一下 Spring的IOC、DI

    国庆节刚过,应一些朋友的提问,总结一下Spring中IOC也即DI的通俗理解. 网友wm5920解释: IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件 ...

  7. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  8. spring核心技术IOC,DI

    在介绍Spring中IOC之前,先说说Spring的优势有哪些.首先1.方便解耦,简化开发:就是说将对象间的依赖关系交给Spring进行控制,避免了编码造成的过度耦合.2.AOP编程的支持:方便进行切 ...

  9. Spring中IoC的入门实例

    Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如 ...

随机推荐

  1. POJ 2485 最小生成树

    2333333333 又是水题.prim模板直接水过.求最小生成树里的最大的边的权值. 附代码:// 如果我木猜错的话.是要求最小生成树的最大边值. #include<stdio.h>#i ...

  2. DevExpress v17.2新版亮点—ASP.NET篇(二)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress ASP.NET v17.2 的GridView Control. ...

  3. <NET CLR via c# 第4版>笔记 第17章 委托

    17.1 初识委托 .net 通过委托来提供回调函数机制. 委托确保回调方法是类型安全的. 委托允许顺序调用多个方法. 17.2 用委托回调静态方法 将方法绑定到委托时,C# 和 CLR 都允许引用类 ...

  4. 2019.1.7 Russia temperature control demo

    1layout 2导出Gerber 做钢网 3刷锡膏 4.1调SMT程序: a摆元件,写P/N位置 b定位检测点 4.2手贴元件 手别抖! 5过炉 温度270 6插件PCBA 做载板最方便,手插焊接也 ...

  5. Kali Linux更新源以及设置中文

    在终端输入 gedit /etc/apt/sources.list 复制下列源替换原有的 #官方源 deb http://http.kali.org/kali sana main non-free c ...

  6. TwoSum:两数相加得0

    在一个不重复的数组中,统计有多少组两个元素相加得0. 这里使用三种方式实现,并统计他们各自花费的时间: import java.util.Arrays; import java.util.HashMa ...

  7. 离线使用Visual Studio的Javascript Prettier插件

    用Prettier插件来格式化Javascript代码效果好的不得了,简直是强迫症的救命克星,可惜单位的电脑是不联网的,始终用不了,今天抽空研究了一下,找到办法了. 1.下载JavaScript Pr ...

  8. grafana查询中的变量templating

    有时我们在管理成百上千台机器的时候,配置grafana无疑是明智的,因为你不需要一个一个的把每个机器的图形都配置一遍,利用templating就可以瞬间实现n台机器的状态显示了. templating ...

  9. Redis学习第五课:Redis Set类型及操作

    Set是集合,它是string类型的无序集合.set是通过hash table实现的,添加.删除和查找的复杂度都是O(1). 对集合我们可以取并集.交集.差集.通过这些操作我们可以实现SNS中的好友推 ...

  10. MySQLzip压缩文件格式安装教程

    MySQL是一个小巧玲珑但功能强大的数据库,目前十分流行.但是官网给出的安装包有两种格式,一个是msi格式,一个是zip格式的.很多人下了zip格式的解压发现没有setup.exe,面对一堆文件一头雾 ...