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)

相关推荐

  • java线程相关知识点有哪些

    技术java线程相关知识点有哪些这篇文章主要讲解了“java线程相关知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java线程相关知识点有哪些”吧!cas c

    攻略 2021年11月24日
  • 如何解决红杉离线备份的相关问题

    技术Sequoiadb backupOffline相关问题怎么解决这篇文章主要介绍“Sequoiadb backupOffline相关问题怎么解决”,在日常操作中,相信很多人在Sequoiadb backupOfflin

    攻略 2021年12月22日
  • 抖音刷1000粉丝,抖音免费获取粉丝?

    技术抖音刷1000粉丝,抖音免费获取粉丝?抖音是一款短视频app,深受大众的喜爱,因为里面既可以观看别人的作品,也可以发布自己的作品。别人观看自己的作品后给点赞,就是给我们最大的鼓励。但是,在抖音上发布的大多数作品是没有

    测评 2021年11月11日
  • asp.net core 中Service层的实现样板是怎样的

    技术asp.net core 中Service层的实现样板是怎样的这期内容当中小编将会给大家带来有关asp.net core 中Service层的实现样板是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文

    攻略 2021年11月15日
  • Android消息机制Handler用法有哪些

    技术Android消息机制Handler用法有哪些这篇文章主要讲解了“Android消息机制Handler用法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Andr

    攻略 2021年11月30日
  • C/C++ 数据类型 表示最大 最小数值 探讨

    技术C/C++ 数据类型 表示最大 最小数值 探讨 C/C++ 数据类型 表示最大 最小数值 探讨C/C++中存储数字格式有整型和浮点型 字符型数据本质上也是以整型存储整型
    对于整型数据,最大值最小值很

    礼包 2021年10月26日