Spring中接口注入的三种方式分别是什么

技术Spring中接口注入的三种方式分别是什么本篇文章为大家展示了Spring中接口注入的三种方式分别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring中 接口注入

本文向您展示了Spring中接口注入的三种方式。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

在上面的代码中,ClassA依赖于InterfaceB的实现。如何获取接口B的实现类的实例?传统的方法是在代码中创建一个InterfaceB实现类的实例,并将其分配给clzB。

Spring

我们经常使用接口来分离调用者和实现者。例如:

public class class a { PrivateInterfaceClzb;public init(){ Ojbectobj=class . for name(Config。双实现)。new INSTANCE();clzB=(interface b)obj;} helliphellip}在上面的代码中,ClassA依赖于InterfaceB的实现。如何获取接口b实现类的实例?传统的方法是在代码中创建一个InterfaceB实现类的实例,并将其分配给clzB。

这样,ClassA就依赖于编译时接口的实现。为了在编译时将调用者和实现者分开,有了上面的代码,我们根据配置文件中预置的实现类的类名动态加载实现类,通过InterfaceB强制转换后由ClassA使用.

这是接口注入最原始的原型。

对于Type1 IOC容器,加载接口实现和创建其实例的任务由容器完成,例如Context。查找(ServletContext。getxxx),常用于J2EE开发,是Type1 IOC的表达形式。

阿瓦隆阿帕奇是典型的1型IOC容器。

接口

构造注入,即依赖关系的设置由构造函数完成,如:

public classidibyconstructor { privatefinddatasourcedata source;privatefinalStringmessagepublic dibyconstructor(DataSourceds,Stringmsg){ this . data source=ds;this.message=msg} helliphellip}可以看到,在Type2的依赖注入机制中,依赖关系是通过类构造函数建立的,容器通过调用类的构造函数将所需的依赖关系注入其中。

PicoContainer(另一个实现依赖注入模式的轻量级容器)首先实现Type2的依赖注入模式。

Type1 接口注入

在各种依赖注入模式中,固定值注入模式在实际开发中得到了广泛的应用(很大一部分原因是受Spring框架的影响)。

在我看来,基于设置模式的依赖注入机制更加直观自然。快速启动中的例子是典型的设置注入,即通过类的setter方法设置依赖关系。

Type2构造子注入

由于它的侵入性,注入模式要求组件与特定的接口相关联,因此它不受重视,并且实际用途有限。

Type3设值注入

1.“在施工期间创造一个完整合法的对象”。对于这个Java设计原则,Type2无疑是* * *。

2.避免了setter方法的繁琐编写,所有依赖项都在构造函数中设置,依赖项集中呈现,更容易阅读。

3.由于没有setter方法,并且依赖关系在构建时由容器设置一次,组件创建后处于相对“不变”的稳定状态,因此无需担心上层代码在调用过程中执行setter方法时会破坏组件的依赖关系,尤其是对于Singleton模式的组件,可能会对整个系统产生重大影响。

4.同样,因为关联只在构造函数中表达,所以只有组件创建者需要关心组件内的依赖关系。对于调用者来说,组件中的依赖关系在一个黑盒中。从上层屏蔽不必要的信息也确保了系统的层次清晰。

5.通过注入构造函数,这意味着我们可以决定在构造函数中注入依赖项的顺序。对于严重依赖外部服务的组件,获取依赖关系的顺序可能非常重要。例如,注入依赖关系的先决条件是已经设置了组件的数据源和相关资源。

几种依赖注入模式的对比总结

1.对于习惯于传统JavaBean开发的程序员来说,通过setter方法设置依赖关系更加直观和自然。

2.如果依赖关系(或者继承关系)比较复杂,那么Type2模式的构造函数会相当大(我们需要在构造函数中设置所有的依赖关系),而Type3模式此时往往比较简单。

3.对于一些第三方类库,我们的组件可能需要提供一个默认的构造函数(比如Struts中的Action)。此时Type2的依赖注入机制反映出其局限性,很难完成我们期望的功能。

因此,Type2和Type3各有优势,而Spring和PicoContainer都为Type2和Type3的依赖注入机制提供了很好的支持。这给我们提供了更多的选择。理论上,依赖注入效果可以通过使用Type2作为主类型,Type3作为补充来实现,但是Type3更广泛地用于基于Spring Framework的应用。

以上内容就是Spring中接口注入的三种方式是什么。你学到什么知识或技能了吗?如果你想学习更多的技能或丰富你的知识储备,请关注行业信息渠道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/51140.html

(0)

相关推荐

  • 如何监听Oracle

    技术如何监听Oracle这篇文章将为大家详细讲解有关如何监听Oracle,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Oracle 监听一:没有listener.ora监听文件监听文件

    攻略 2021年12月1日
  • 如何安装xtrabackup

    技术如何安装xtrabackup这篇文章主要为大家展示了“如何安装xtrabackup”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何安装xtrabackup”这篇文章吧。

    攻略 2021年11月6日
  • Cubieboard 3如何安装Jenkins

    技术Cubieboard 3如何安装Jenkins这篇文章主要为大家展示了“Cubieboard 3如何安装Jenkins”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Cub

    攻略 2021年11月26日
  • 奶牛的英文,英文单词“cow”的读音是什么

    技术奶牛的英文,英文单词“cow”的读音是什么英式读音[kaʊ] 美式读音[kaʊ] n. 奶牛奶牛的英文,乳牛;母兽;雌(象,鲸等);对女性的蔑称; vt. 恐吓;吓唬;威胁; ①造句:He kep

    生活 2021年10月22日
  • 抖音如何吸粉,抖音如何快速吸粉?

    技术抖音如何吸粉,抖音如何快速吸粉?抖音可以说是目前来讲很好的一个风口,因此也有很多人开始进去抖音的行业,那么吸粉大家公认的抖音瓶颈,没关系,因为本文将要教你史上最简单的抖音吸粉方法。一、蹭热度
    假如你的账号根本就没有一

    测评 2021年10月26日
  • JAVA工具如何将一个list均分成n个list

    技术JAVA工具如何将一个list均分成n个list这篇文章将为大家详细讲解有关JAVA工具如何将一个list均分成n个list,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了

    攻略 2021年10月23日