依赖注入的三种方式

一、构造器注入

将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注入。
优点:
对象初始化完成后便可获得可使用的对象。
缺点:
当需要注入的对象很多时,构造器参数列表将会很长;
不够灵活。若有多种注入方式,每种方式只需注入指定几个依赖,那么就需要提供多个重载的构造函
数,麻烦。

二、setter 方法注入

IoC Service Provider 通过调用成员变量提供的 setter 函数将被依赖对象注入给依赖类。
优点:
灵活。可以选择性地注入需要的对象。
缺点:
依赖对象初始化完成后由于尚未注入被依赖对象,因此还不能使用。

三、接口注入

依赖类必须要实现指定的接口,然后实现该接口中的一个函数,该函数就是用于依赖注入。该函数的参
数就是要注入的对象。
优点
接口注入中,接口的名字、函数的名字都不重要,只要保证函数的参数是要注入的对象类型即可。
缺点:
侵入行太强,不建议使用。
PS:什么是侵入行?
如果类 A 要使用别人提供的一个功能,若为了使用这功能,需要在自己的类中增加额外的代码,这就是
侵入性。

【依赖注入的几种方式】相关推荐

  1. Dagger2 知识梳理(1) Dagger2 依赖注入的两种方式

    一.资料推荐 最近这几天一直在看有关Dagger2有关的文章,感觉就是这东西真难用.真难懂,数次想要放弃,还好有网上大神的教程帮助,模模糊糊总算能把基本的几个概念跑通了. 这里首先推荐 牛晓伟 的下面 ...

  2. 依赖注入的两种方式并附上例子

    1.依赖注入:就是指程序在运行过程中,如果需要另外一个对象协助完成时,无需在代码中创建被调用者,而是依赖外部的注入获取. 2.依赖注入的两种方式: 设置注入:设置注入是通过setter方法注入被调用者 ...

  3. Spring系列之依赖注入的三种方式

    目录 一.依赖注入方式 1.使用属性的setXXX方法注入 2.构造函数注入 (1)按类型匹配入参type (2)按索引匹配入参index (3)联合使用类型和索引匹配入参[type和index一起使 ...

  4. Spring实现依赖注入的几种方式

    Spring实现依赖注入的几种方式 1.基于有参构造实现 <bean id="user" class="com.ccu.twj"><const ...

  5. 05.bean依赖注入的三种方式

    05.bean依赖注入的三种方式 1.概述 依赖注入 DI(Dependency Injection):它是 Spring 框架核心 IOC 的具体实现. 在编写程序时,通过控制反转,把对象的创建交给 ...

  6. spring依赖注入的4种方式

    Spring 依赖注入的4种方式 一.Set注入 必须要有setter方法 public class UserDao {public void test(){System.out.println(&q ...

  7. Spring IOC (DI) 依赖注入的四种方式

    依赖注入的四种方式: set 注入 赋值,默认使用的是set() 方法,依赖注入底层是通过反射实现的 <bean id="student" class="cust. ...

  8. spring依赖注入简介以及依赖注入的两种方式

    1.spring依赖注入简介 依赖注入:Set注入1.依赖:bean对象创建依赖于容器!2.注入:bean对象中的所有属性,由容器来注入! 2.依赖注入的两种方式   实体类: package com ...

  9. spring依赖注入的三种方式以及优缺点

    spring依赖注入的三种方式以及优缺点 一.依赖注入的三种方式 1.通过构造器注入.(spring4.3之后,推荐使用) 2.通过setter注入.(spring4.3之前,推荐使用) 3通过fil ...

  10. php依赖注入的三种方式

    控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency Inject ...

最新文章

  1. 逻辑回归python sigmoid(z)_python实现吴恩达机器学习练习2(逻辑回归)-data1
  2. c语言程序设计A课程试,自学考试有关论文范文,与C语言程序设计A课程辅导相关硕士毕业论文范文...
  3. numpy二维数组改变某些数_【每天15分钟,5天学会NumPy】第1天:基本概念
  4. java class获取type_java – 获取Class [Runtime-Type Token]的实例
  5. 微信公众号sae服务器搭建,SAE 搭建微信公众平台
  6. 2013国家二级c语言上机考试点了编译并运行出现黑框闪退,2013年计算机二级C语言上机试题及解析2...
  7. 用VB实现带图片的XP风格的按钮控件
  8. js中addEventLister()函数的用法
  9. 第二课 了解编程环境
  10. canvas实现web excel高性能表格(发布开源)
  11. [渝粤教育] 西南科技大学 会计电算化 在线考试复习资料2021版(1)
  12. 基于牛顿法的开平方实现
  13. 第十六篇 晶体管之电流放大器
  14. 从网络出发讲透Harmonious Attention Network for Person Re-Identification你不懂的细节
  15. 如何在Unity上开发Nintendo(任天堂)Switch平台游戏时让游戏patch包大小尽量小
  16. 【算法】二维子矩阵的和
  17. 题目中的英语短语积累
  18. CHIL-SQL-NOW() 函数
  19. 简约大气仿小米社区网站风格的WP主题模板
  20. 如何用最短时间学会数据分析?

热门文章

  1. 64中常用十六进制颜色整
  2. 用文言文翻译网络流行语!~张润萌
  3. chkconfig(check config)命令详解
  4. 源码编译报错系列之:Fatal error compiling: 无效的标记: --release -> [Help 1]
  5. 猴子分桃问题的解决方法
  6. CISCO无逼逼赖赖之BGP建邻居详细配置与show命令介绍
  7. element ui tabl 输出Html
  8. (转载)深度剖析 | 可微分学习的自适配归一化 (Switchable Normalization)
  9. mediaMetadataRetriever.setDataSource throws illegal argument exception
  10. 美颜SDK在其它应用场景表现如何?