首先:

  1.依赖注入就是一种在一个需要使用它的类中定义一个接口,该类中不管这个接口是怎么实现的,只是执行这个方法

  2.依赖注入可以让该类实现通用

代码:

1.定义一个饮料接口

 package cn.lonecloud.model;
/**
* 创建一个食物接口
* @Title: IDrink.java
* @Package cn.lonecloud
* @Description:
* @author lonecloud
* @date 2016年10月4日 上午9:39:31
*/
public interface IDrink {
public void drink();
}

2.书写它的实现类

 package cn.lonecloud.model;

 /**
* 牛奶
* @Title: milk.java
* @Package cn.lonecloud
* @Description:
* @author lonecloud
* @date 2016年10月4日 上午9:42:17
*/
public class Milk implements IDrink { @Override
public void drink() {
// TODO Auto-generated method stub
System.out.println("喝牛奶");
} }
 package cn.lonecloud.model;

 public class Water implements IDrink {

     @Override
public void drink() {
// TODO Auto-generated method stub
System.out.println("喝水");
} }
 package cn.lonecloud.model;

 public class Coffee implements IDrink {

     @Override
public void drink() {
// TODO Auto-generated method stub
System.out.println("喝的是咖啡");
} }

这三个实现类是对这个饮料接口的实现

3.书写顾客类

 package cn.lonecloud;

 import cn.lonecloud.model.IDrink;

 /**
* 顾客类
* @Title: Customer.java
* @Package cn.lonecloud
* @Description:
* @author loneloud
* @date 2016年10月4日 上午9:47:32
*/
public class Customer {
/**
* 使用这个进行将酒依赖注入到顾客的饮料中
* @param myDrink
*/
public Customer(IDrink myDrink) {
// TODO Auto-generated constructor stub
this.myDrink=myDrink;
}
public Customer() {
// TODO Auto-generated constructor stub
}
public void sendDrink(IDrink drink){
this.myDrink=drink;
}
/**
* 顾客选择要喝的饮料
*/
private IDrink myDrink;
/**
* 顾客喝饮料
* @Description:
*/
public void drinking(){
myDrink.drink();
}
}

顾客喝饮料,定义接口然后可以采用定义方法或者构造方法对这个饮料进行实现。

5.测试方法

 package cn.lonecloud;

 import org.junit.Test;

 import cn.lonecloud.model.Coffee;
import cn.lonecloud.model.IDrink; public class CustomerTest { /**
* 使用这种的话可以使得顾客类变成通用
* @Description:
*/
@Test
public void testByConstract(){
IDrink drink=new Coffee();
//这里可以实现对饮料的注入
Customer customer=new Customer(drink);
customer.drinking();
}
/**
* 使用方法体进行注入
* @Description:
*/
@Test
public void testByMethod(){
IDrink drink=new Coffee();
Customer customer=new Customer();
//这里可以实现对饮料的注入
customer.sendDrink(drink);
customer.drinking();
}
}

Spring 依赖注入的理解的更多相关文章

  1. Spring依赖注入(IOC)那些事

    小菜使用Spring有几个月了,但是对于它的内部原理,却是一头雾水,这次借着工作中遇到的一个小问题,来总结一下Spring. Spring依赖注入的思想,就是把对象交由Spring容器管理,使用者只需 ...

  2. Java Web系列:Spring依赖注入基础

    一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...

  3. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  4. SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

           在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...

  5. (转)编码剖析Spring依赖注入的原理

    http://blog.csdn.net/yerenyuan_pku/article/details/52834561 Spring的依赖注入 前面我们就已经讲过所谓依赖注入就是指:在运行期,由外部容 ...

  6. spring依赖注入(反转控制)

    SPRING依赖注入机制(反转控制)解析 Spring能有效地组织J2EE应用各层的对象.不管是控制层的Action对象,还是业务层的 Service对象,还是持久层的DAO对象,都可在Spring的 ...

  7. Helloworld之Spring依赖注入/控制反转(DI/IoC)版

    Helloworld之Spring依赖注入/控制反转(DI/IoC)版 作者:雨水, 日期:2014-10-29 摘要:本文主要用于培训刚開始学习的人理解Spring中的依赖注入的基本概念. 先介绍依 ...

  8. 1.4 Spring 依赖注入(DI)和控制反转(IOC)详解

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1  Spring 依赖注 ...

  9. Spring依赖注入三种方式详解

    在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...

随机推荐

  1. vue+springboot前后端分离实现单点登录跨域问题处理

    最近在做一个后台管理系统,前端是用时下火热的vue.js,后台是基于springboot的.因为后台系统没有登录功能,但是公司要求统一登录,登录认证统一使用.net项目组的认证系统.那就意味着做单点登 ...

  2. c指针作为参数传递以及指针的指针

    指针作为函数参数传递 函数参数传递的只能是数值,所以当指针作为函数参数传递时,传递的是指针的值,而不是地址. #include "stdio.h" void pointer(int ...

  3. centos下配置sftp且限制用户访问目录[转]

    第一步:创建sftp服务用户组,创建sftp服务根目录 groupadd sftp #此目录及上级目录的所有者(owner)必须为root,权限不高于755,此目录的组最好设定为sftp mkdir ...

  4. jsp页面取值

    一般就用el表达式 ${recordList[4].baseRate8.split("/")[0] } <s:date name="recordList[#id]. ...

  5. MySQL相关命令与备份

    不加任何参数直接备份 mysqldump -uroot zabbix >/opt/zabbix.bak.sql 恢复,这样恢复时需要自已创建表 mysql -uroot < zabbix. ...

  6. disptch_after 自递归

    NSArray *arr = @[@"1", @"2", @"3", @"4", @"5"];    ...

  7. linux makefile字符串操作函数 替换subst、模式替换patsubst、去首尾空格strip、查找字符串findstring、过滤filter、反过滤filter-out、排序函数sort、取单词word、取单词串wordlist、个数统计words

    1.1       字符操作函数使用 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函 ...

  8. Java语言程序设计基础篇第10版第5章习题答案

    5.1 1 public class Demo { public static void main(String[] args) { // 创建一个输入对象 java.util.Scanner inp ...

  9. linux上的用户管理

    作为一个专业的服务器发行版,CentOS上存在着n多个用户,作为一个专业的运维工程师,linux的用户管理和用户组的管理是做为一个SA必不可少的工作. 下面我们就先来谈谈linux中的用户管理: us ...

  10. java HotSpot 内存管理白皮书

    原文见:http://www.open-open.com/lib/view/open1381034220705.html.查阅资料后,对原文做了补充. 文中关于JVM的介绍基于JDK1.6的Hotsp ...