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 ...
随机推荐
- 【笔记】vue-cli 开发环境中跨域连接后台api(vue-resource 跨域post 请求)
在vue-cli 项目中很多人会用到mock 数据(模拟数据),但是我觉得如果在真实的数据库交互中开发会更有安全感一些,所以查了一下百度很多人推荐的就是: 跨域! 跨域是什么概念?不同的主机名,同主机 ...
- 借助 Vue 来构建单页面应用
原文: https://github.com/MeCKodo/vue-tutorial 主题 Vue.js (1/2)Vue构建单页应用最佳实战 前言 我们将会选择使用一些vue周边的库 1.使用no ...
- spring 事务隔离级别配置
声明式的事务处理中,要配置一个切面,即一组方法,如 其中就用到了propagation,表示打算对这些方法怎么使用事务,是用还是不用,其中propagation有七种配置,REQUIRED.SUPPO ...
- 要学的东西太多了,还想学习opencv
资料先放这里,以后好好学 http://m.blog.csdn.net/column/details?alias=opencv-tutorial eclipse加载opencv库成功! B站视频教程资 ...
- 自己模拟的一个简单的tomcat
servlet容器的职责 总的来说,一个全功能的servlet容器会为servlet的每个HTTP请求做下面的一些工作: 1,当第一次调用servlet的时候,加载该servlet类并调用servle ...
- 【原创】python实现视频内的face swap(换脸)
1.准备工作,按博主的环境为准 Python 3.5 Opencv 3 Tensorflow 1.3.1 Keras 2 cudnn和CUDA,如果你的GPU足够厉害并且支持的话,可以选择安装 那就先 ...
- MyCat 入门:漫谈 MyCat 配置系统
文章首发于[博客园-陈树义],点击跳转到原文<MyCat 入门:漫谈 MyCat 配置系统> 上篇文章<MyCat 启蒙:分布式系统的数据库架构演变>中,我们通过一个项目从零到 ...
- samephore()信号量跨线程通信
samephore1: #include <stdio.h> #include <stdlib.h> #include <Windows.h> ] = " ...
- [DeeplearningAI笔记]ML strategy_1_2开发测试集评价指标
机器学习策略 ML strategy 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.4 满足和优化指标 Stisficing and optimizing metrics 有时候把你要考 ...
- Django跨域请求之JSONP和CORS
现在来新建一个Django项目server01,url配置为 url(r'^getData.html$',views.get_data) 其对应的视图函数为get_data: from django. ...