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)

相关推荐

  • 如何在Cubieboard上搭建个人云存储

    技术怎么在Cubieboard上搭建个人云存储这篇文章将为大家详细讲解有关怎么在Cubieboard上搭建个人云存储,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。准备工作

    攻略 2021年12月13日
  • 蛋糕简笔画图片大全,自制蛋糕的做法大全谁有

    技术蛋糕简笔画图片大全,自制蛋糕的做法大全谁有家庭自制蛋糕 工具:电饭锅一个 材料:鸡蛋四个、面粉一饭勺、苏打粉(酵母粉)一小勺、生粉两小勺、色拉油、白砂糖、葡萄干若干 制作:先将鸡蛋打散在一个容器里,边搅拌边加入白砂糖

    生活 2021年10月28日
  • 黄骨鱼的做法,湘菜特色菜干锅黄骨鱼怎么做

    技术黄骨鱼的做法,湘菜特色菜干锅黄骨鱼怎么做主料黄骨鱼的做法:黄骨鱼500克 调料:食盐少许、酱油少许、葱少许、蒜少许、干辣椒少许、生抽少许、香菜少许、植物油适量。 干锅黄骨鱼的做法:
    1.新鲜的黄骨鱼处理干净后,用少

    生活 2021年10月27日
  • 第四章学习笔记,20191213兰毅达)

    技术第四章学习笔记,20191213兰毅达) 第四章学习笔记(20191213兰毅达)第四章学习笔记一、概述
    本章论述了并发编程,介绍了并行计算的概念,指出了并行计算的重要性;比较了顺序算法与并行算法以

    礼包 2021年10月28日
  • Python怎么抓取京东商城评价

    技术Python怎么抓取京东商城评价这篇文章主要讲解了“Python怎么抓取京东商城评价”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么抓取京东商城评价”吧

    攻略 2021年12月1日
  • Reflect反射

    技术Reflect反射 Reflect反射es6提供了一个全新的api----Reflect,其将object对象一些内部的方法,放到Reflect对象上,将来可能彻底取代Object对象内部的这些方法

    礼包 2021年12月21日