先看一段代码
假设你编写了两个类,一个是人(Person),一个是手机(Mobile)。
人有时候需要用手机打电话,需要用到手机的dialUp方法。
传统的写法是这样: Java code public class Person{
public boolean makeCall(long number){
Mobile mobile=new Mobile();
return mobile.dialUp(number);
}
} 也就是说,类Person的makeCall方法对Mobile类具有依赖,必须手动生成一个新的实例new Mobile()才可以进行之后的工作。
依赖注入的思想是这样,当一个类(Person)对另一个类(Mobile)有依赖时,不再该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个beans.xml,告诉容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的类(Mobile)的实例。
接口: Java code public Interface MobileInterface{
public boolean dialUp(long number);
} Person类: Java code public class Person{
private MobileInterface mobileInterface;
public boolean makeCall(long number){
return this.mobileInterface.dialUp(number);
}
public void setMobileInterface(MobileInterface mobileInterface){
this.mobileInterface=mobileInterface;
}
}
xml文件中配置依赖关系 Java code
<bean id="person" class="Person">
<property name="mobileInterface">
<ref local="mobileInterface"/>
</property>
</bean>
<bean id="mobileInterface" class="Mobile"/>
这样,Person类在实现拨打电话的时候,并不知道Mobile类的存在,它只知道调用一个接口MobileInterface,而MobileInterface的具体实现是通过Mobile类完成,并在使用时由容器自动注入,这样大大降低了不同类间相互依赖的关系。
文章摘自http://zhidao.baidu.com/link?url=xL9mnzCggWSwYEddI0s55oGxOOjr48pt4NAmpxSsFNqI935n-kp1Gjo1jIiKvoRGhBqdCjLx9QcVqaxyy54Zo_#
谢谢!

最新文章

  1. javascript的正则表达式学习
  2. bzoj 2563: 阿狸和桃子的游戏
  3. Android中通过线程实现更新ProgressDialog(对话进度条)
  4. [Network] HTML、XML和JSON学习汇总
  5. vs2015打包winform程序遇到的一系列问题
  6. C++学习笔记(1)——数据类型占空间大小
  7. python,python3
  8. 20135316王剑桥 linux第七周课实验笔记
  9. php任何优化的方式下这样第个列表都是再次查询
  10. C Primer Plus(第五版)11
  11. 安装redis,含安装步骤和安装中出现的详细错误分析
  12. linux 显示文件或文件夹
  13. 个人作业2—英语学习APP案例分析
  14. java中hashCode()与equals()详解
  15. jq判断是PC还是手机端的方法
  16. Python数据库连接池---DBUtils
  17. mysql的orde by 按照指定状态顺序排序
  18. MYSQL 表大小限制
  19. Python小练习(一)
  20. PostgreSql 函数

热门文章

  1. web前端代码编写体验
  2. 如何修改file控件
  3. 中文Locale
  4. 利用windbg 分析IIS 的线程池w3wp程序多线程挂起问题
  5. iOS:iOS中的多控制器管理
  6. C#获取并写入ORACLE数据库中中英文字符集问题
  7. The type String cannot be constructed. You must configure the container to supply this value.
  8. 浏览器主页被hao123贱贱的篡改的一种方式
  9. 误设PATH导致命令失效的处理
  10. worktile的架构设计