Spring 依赖注入的理解
首先:
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 依赖注入的理解的更多相关文章
- Spring依赖注入(IOC)那些事
小菜使用Spring有几个月了,但是对于它的内部原理,却是一头雾水,这次借着工作中遇到的一个小问题,来总结一下Spring. Spring依赖注入的思想,就是把对象交由Spring容器管理,使用者只需 ...
- Java Web系列:Spring依赖注入基础
一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...
- SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式
于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...
- SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式
在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...
- (转)编码剖析Spring依赖注入的原理
http://blog.csdn.net/yerenyuan_pku/article/details/52834561 Spring的依赖注入 前面我们就已经讲过所谓依赖注入就是指:在运行期,由外部容 ...
- spring依赖注入(反转控制)
SPRING依赖注入机制(反转控制)解析 Spring能有效地组织J2EE应用各层的对象.不管是控制层的Action对象,还是业务层的 Service对象,还是持久层的DAO对象,都可在Spring的 ...
- Helloworld之Spring依赖注入/控制反转(DI/IoC)版
Helloworld之Spring依赖注入/控制反转(DI/IoC)版 作者:雨水, 日期:2014-10-29 摘要:本文主要用于培训刚開始学习的人理解Spring中的依赖注入的基本概念. 先介绍依 ...
- 1.4 Spring 依赖注入(DI)和控制反转(IOC)详解
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1 Spring 依赖注 ...
- Spring依赖注入三种方式详解
在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...
随机推荐
- redux学习日志:关于react-redux
首先先强调一句:一定要多读官方文档,而且要精读,否则你会忽略掉很多东西! 一,Provider 刚开始看的时候,大致浏览了一下,知道了这个组件是能够接收store作为它的属性,然后它里面的子组件就可以 ...
- python 函数返回多个参数的赋值方法
#定义函数 def Get_Counter_AllMeasureValue(self, inst_dg_address): """ get all measure val ...
- 关于今天esp8266运行失控问题和oled与串口共存尝试成功的总结
今天2017-12-1720:24:22下午esp8266再次无法刷入固件,导致我一度崩溃,本来已经认为esp8266已经相当稳定了,没想到今天又运行出错,总结如下 今天2017-12-17esp无法 ...
- hibernate 常用主键生成策略与配置
<id name="id" column="id"> <generator class="assigned" /> ...
- History对象和location对象
history对象 History对象包含用户在浏览器窗口中访问过的url.不是所有浏览器都支持该对象. 属性length 返回浏览器历史列表中的URL数量. 方法:back() 加载histor ...
- useradd和adduser
1.Ubuntu中,adduser是一个脚本,而useradd是一个二进制程序,前者对后者进行了封装,更加智能. 2.Centos中,adduser和useradd完全相同,adduser是一个符号链 ...
- python 字典操作方法详解
字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字.字符串.元组,这种结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 注意,浮点数比较很不精确, ...
- 无线渗透测试之wifi密码破解
[声明]:本文仅供个人学习使用,请勿违法破解他人wifi 测试工具: 1.CDlinux启动盘:(请参照https://my.oschina.net/u/3112136/blog/800713) 2. ...
- MIB Browser如何导入已编译的mib
开发过程中,如果需要来回在几套mib之间来回切换,每次都进行编译工作那将是一件很繁琐的事情,我们可以直接导入已经编译好的mib文件,避免重复的编译工作. 第一步,备份已经编译好的mib文件. 将 ...
- BZOJ 1072: [SCOI2007]排列perm [DP 状压 排列组合]
题意:给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0) 100%的数据满足:s的长度不超过10, 1<=d<=1000, 1<=T<=15 看到整 ...