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)

相关推荐

  • linux中基础命令怎么用

    技术linux中基础命令怎么用这篇文章给大家分享的是有关linux中基础命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.xargs常用xargs -l1 -P5 -i行,线程,-i

    攻略 2021年11月20日
  • 怎么利用SQL SERVER的触发器制作后门

    技术怎么利用SQL SERVER的触发器制作后门小编给大家分享一下怎么利用SQL SERVER的触发器制作后门,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起

    攻略 2021年11月18日
  • 独特的近义词是什么,别具一格的近义词是什么

    技术独特的近义词是什么,别具一格的近义词是什么词目:别具一格拼音:biéjùyīgé类别:成语释义:别独特的近义词是什么,其它。具,另有。比喻另有一种独特的风格(风味)。出处:清·吕留良《与施愚山书》:“咏见赠诗,风力又

    生活 2021年10月21日
  • mysql数据目录结构是怎么样的

    技术mysql数据目录结构是怎么样的mysql数据目录结构是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mysql数据目录结构(转

    攻略 2021年11月16日
  • Docker容器与容器云的优点有哪些

    技术Docker容器与容器云的优点有哪些本篇内容介绍了“Docker容器与容器云的优点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年12月13日
  • c的发音,英语字母“C”应该读[si:]

    技术c的发音,英语字母“C”应该读[si:]拉丁字母 C 在通用的英语口音 [1] 里都念 see /si?/c的发音。电视播音员、主持人的英语口音都很严重。这不是有意要重读或怎样。好多主持人还有北京的「wa > va」

    生活 2021年10月27日