当前位置: 首页 > news >正文

IOC三种依赖注入的方式,以及区别

目录

  • 构造方法注入(constructor injection)
  • setter 方法注入(setter injection)
  • 接口注入(interface injection)
  • 三种方式比较

构造方法注入(constructor injection)

构造方法中声明依赖对象的参数列表,让IoC容器知道它需要哪些依赖对象。

此方法比较直观,对象构造完成后,即进入就绪状态,可以马上使用。

public FXNewsProvider(IFXNewsListener newsListner,IFXNewsPersister newsPersister)
{this.newsListener = newsListner;this.newPersistener = newsPersister; 
}

setter 方法注入(setter injection)

只需要为依赖对象所对应的属性添加setter方法,就可以通过setter方法将相应的依赖对象设置到被注入对象中。

比构造方法注入宽松一些,可以在对象构造完成后再注入。

public class FXNewsProvider
{private IFXNewsListener newsListener;private IFXNewsPersister newPersistener;public IFXNewsListener getNewsListener() {return newsListener;}public void setNewsListener(IFXNewsListener newsListener) {this.newsListener = newsListener;}public IFXNewsPersister getNewPersistener() {return newPersistener;}public void setNewPersistener(IFXNewsPersister newPersistener) {this.newPersistener = newPersistener;}
}

接口注入(interface injection)

被注入对象如果想要IoC Service Provider为其注入依赖对象,就必须实现某个接口。这个接口提供一个方法,用来为其注入依赖对象。IoC Service Provider最终通过这些接口来了解应该为被注入对象注入什么依赖对象。

接口注入比较死板和繁琐,是现在不甚提倡的一种方式,“退役”选手。

三种方式比较

注入方法优缺点
构造方法注入构造方法注入的优点是当对象构造完成之后,就能够处于就绪状态,能够提供使用,而缺点在于如果对象太多,或者某个对象的参数多而复杂的话,构造方法就很繁琐,并且维护也是有较大的困难
setter方法注入主要体现在性能方面,因为方法可以自定义命名,描述也就更加人性化了,可以有默认值设置。不足的地方可能就是不能立即使用该对象
接口注入入侵性太强,如果需要注入依赖对象,被注入对象必须声明和实现另外的接口。不提倡这种方法
http://www.lryc.cn/news/32745.html

相关文章:

  • Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存
  • 计算机图形学08:中点BH算法绘制抛物线(100x = y^2)
  • 基于java的高校辅导员工作管理系统
  • 字节3次都没裁掉的7年老测试。掌握设计业务与技术方案,打开上升通道!
  • 详细介绍关于链表【数据结构】
  • 2.3 二分搜索技术
  • RWEQ模型的土壤风蚀模数估算、其变化归因分析
  • 学习streamlit-1
  • GPS定位知识介绍
  • 【Linux】理解Linux环境变量
  • ISCSI块存储-集群
  • 11.Maxwell 部署
  • 一文速学-GBDT模型算法原理以及实现+Python项目实战
  • 前端——2.HTML基本结构标签
  • OAK深度相机使用不同镜头和本地视频流进行模型推理
  • [项目] Boost搜索引擎
  • 解决新版QGIS找不到Georeferencer插件
  • c---冒泡排序模拟qsort
  • Java知识复习(十四)JS
  • 代码随想录刷题-数组-移除元素
  • 聚观早报 |拼多多跨境电商业务正式登陆澳洲;中国加快6G网络研发
  • MDK Keil5 创建Stm32工程-理论篇(这里以Stm32F103Zet6为例)
  • 应届大学生学什么技术好?哪些技术适合年轻人?
  • 车企数据分类分级的实践指南出炉!“数据安全推进计划”发布,奇点云参编
  • Nginx学习 (2) —— 虚拟主机配置
  • Java 动态代理简述和实例
  • Unity编译器扩展(Advanced Editor Scripting)
  • AFR机制及流程介绍
  • 9.Hbase 部署
  • 【maven 学习记录】