spring——依赖注入原理及注入方式

这篇具有很好参考价值的文章主要介绍了spring——依赖注入原理及注入方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

📲一、依赖注入的原理是什么,为什么要用依赖注入?

🟣1.依赖注入(Dependency Injection,DI)
是一种设计模式和编程技术,其原理是将对象的依赖关系由外部容器来管理和注入。它的目的是解耦组件之间的依赖关系,提高代码的灵活性、可维护性和可测试性。
🟣2.依赖注入的原理

是通过在对象的构造函数、属性或方法中注入所依赖的对象,而不是在对象内部创建或获取依赖对象。这样,对象的依赖关系由外部容器来管理,对象只需要关注自身的核心功能,而不需要关心如何获取依赖对象。

🟣3.依赖注入的主要目的

是实现控制反转(Inversion of Control,IoC),即将对象的创建、组装和依赖关系的管理交给外部容器来负责。通过使用依赖注入,可以实现以下好处:

(1)解耦对象之间的依赖关系:对象不再负责创建或获取依赖对象,而是通过注入的方式来获取所需的依赖对象,从而降低了对象之间的耦合性。
(2)提高代码的可测试性:依赖注入使得在测试过程中可以轻松替换依赖对象,从而实现针对单个组件的独立测试,减少了对外部资源的依赖,使得测试更加简单和可靠。
(3)提高代码的灵活性和可维护性:通过外部容器来管理依赖关系,可以更灵活地配置和组装对象,便于修改、扩展和维护代码。

总结来说,依赖注入的原理是通过将对象的依赖关系由外部容器来管理和注入,从而解耦组件之间的依赖关系,提高代码的灵活性、可维护性和可测试性。使用依赖注入可以使代码更清晰、可读性更高,并且更易于单元测试和扩展。

📲二、依赖注入有哪几种方法?

🟣1、构造函数注入(Constructor Injection):

通过在对象的构造函数中接收所需的依赖对象来进行注入。在创建对象时,将依赖对象作为参数传递给构造函数,对象在创建完成后就具备了所需的依赖对象。这种方式可以保证对象的依赖在创建时就被满足,并且使得对象的依赖关系清晰明确。

(1)首先,创造一个类,配置bean.xml文件
   <bean id="bookCon" class="com.itguigu.spring6.iocxml.di.Book">
        <constructor-arg name="name" value="后端"></constructor-arg>
    </bean>
(2)在bean标签内部使用 constructor-arg标签

🟠type属性:使用类型指定构造方法中参数的类型

🟠index属性:使用构造方法中参数索引值来 进行注入

🟠 name属性 :使用构造方法中参数名称 来注入 ( 常用!)

🟠value属性:要注入的值(基本数据类型和String类型)

🟠ref属性:要注入的值(引用在IOC容器中其他的bean对象)

🟣2、Setter方法注入(Setter Injection):
必须要有一个无参的构造方法,否则只能用构造方法构造

通过提供一组Setter方法,将依赖对象通过Setter方法进行注入。在对象创建完成后,通过调用相应的Setter方法来设置依赖对象。这种方式使得对象的依赖可以在创建后的任意时刻进行注入,具有更大的灵活性。

Setter方法注入的原理步骤如下:

🟠(1)定义对象的依赖属性:在目标对象中定义一个或多个私有属性,用于存储依赖对象的引用。

🟠(2)提供Setter方法:为每个依赖属性提供对应的公共Setter方法,用于接收依赖对象的实例。

🟠(3)创建目标对象实例:通过实例化目标对象的类,创建目标对象的实例。

🟠(4)获取依赖对象:从外部获取依赖对象的实例,可以是通过容器或其他方式。

🟠(5)调用Setter方法:将依赖对象的实例作为参数,调用目标对象的Setter方法进行注入。在调用Setter方法时,目标对象会将依赖对象的引用存储到对应的依赖属性中。

(6)使用目标对象:完成依赖注入后,可以通过目标对象的其他方法或属性来使用注入的依赖对象。

创造一个类,配置bean.xml文件
   public Book(){
        System.out.println("无参数构造执行.......");

    }
    public Book(String name, String author) {
        System.out.println("有参数构造执行.......");
        this.name = name;
        this.author = author;
    }
    <bean id="book" class="com.itguigu.spring6.iocxml.di.Book">
        
        <property name="name" value="前端"></property>
        <property name="author" value="嘎嘎"></property>
        <property name="others" value="&lt;&lt;"></property>
    </bean>
🟣3、接口注入(Interface Injection):

在对象的接口中定义一个用于接收依赖对象的方法,并由外部容器来调用该方法进行注入。接口注入需要对象实现一个特定的接口,外部容器通过该接口的方法来注入依赖对象。这种方式较少使用,因为需要对象实现额外的接口。文章来源地址https://www.toymoban.com/news/detail-480417.html

到了这里,关于spring——依赖注入原理及注入方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring的依赖注入(DI)是什么,有哪些实现方式?

    在Spring中,依赖注入的实现方式主要有以下几种: 类型式依赖注入(Type Based Dependency Injection):这种注入方式是通过Java接口或抽象类来实现的。具体来说,就是将需要注入的依赖关系定义为接口或抽象类,然后通过注解或XML配置文件等方式来指定具体的实现类。在运行时,

    2024年02月09日
    浏览(35)
  • spring(1):基于XML获取Bean对象以及各种依赖注入方式

    1.1 根据id获取 1.2 根据类型获取 1.3 根据id和类型获取 注意: 当根据类型获取bean时,要求IOC容器中指定类型的bean有且只能有一个。 例如以下XML文件,当IOC容器中一共配置了两个,根据类型获取时会抛出异常。 根据类型来获取bean时,在满足bean唯一性的前提下,其实只是看:

    2024年01月25日
    浏览(44)
  • 【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】

    Spring 框架可以说是 Java 开发中最重要的框架,功能 非常 强大 中文文档:https://springdoc.cn/spring/ 官网:https://spring.io/ Spring makes Java Simple、modern、productive … Spring 框架的几个核心概念: IoC: I nversion o f C ontrol:控制反转 DI: D ependency I njection:依赖注入 AOP: A spect O riented P rogram

    2024年02月09日
    浏览(63)
  • Spring面试整理-Spring的依赖注入

    Spring框架的依赖注入(DI)是其核心功能之一,它允许对象定义它们依赖的其他对象,而不是自己创建或查找它们。这种机制促进了松耦合和更容易的测试。 依赖注入是一种设计模式,其中一个对象或方法提供另一个对象的依赖关系。在Spring中,这些依赖通常是服务、配置值

    2024年01月19日
    浏览(58)
  • Spring 的依赖注入

    @ 目录 Spring 的依赖注入 每博一文案 1. 依赖注入 1.1 构造注入 1.1.1 通过参数名进行构造注入 1.1.2 通过参数的下标,进行构造注入 1.1.3 不指定参数下标,不指定参数名字,通过自动装配的方式 1.2 set 注入 2. set注入的各种方式详解 2.1 set 注入外部Bean 2.2 set 注入内部Bean 2.3 set 注

    2024年02月16日
    浏览(44)
  • Spring 依赖注入详解

    目录 1、基于构造器的依赖注入 2、基于 Setter 方法的依赖注入 3、使用构造器注入还是 setter 方法注入? 4、依赖注入解析的过程 5、依赖注入的相关示例 // 依赖关系,指的就是对象之间的相互协作关系         依赖注入(DI)是一个过程,在这个过程中,对象仅通过构造函

    2024年02月06日
    浏览(46)
  • 4、Spring之依赖注入

    依赖注入就是对类的属性进行赋值 创建名为spring_ioc_xml的新module,过程参考3.1节 注意:constructor-arg标签的数量,必须和某一个构造器方法的参数数量一致 4.4.1.1、配置bean 注意:该property name=\\\"sex\\\" value=\\\"null\\\"写法,实际为sex所赋的值是字符串null 4.4.1.2、测试 由控制台日志可知,

    2024年02月14日
    浏览(31)
  • Spring:泛型依赖注入

    泛型 :具有占位符(类型参数)的类、结构、接口和方法,通过 的方式定义了一个形式参数,在实例化时再指明具体类型 依赖注入 :IoC 的具体实现,指对象之间的依赖关系在程序运行时由外部容器动态的注入依赖行为方式 泛型依赖注入 :在进行依赖注入的同时,使用泛型

    2024年02月15日
    浏览(34)
  • Spring Boot中的依赖注入和自动注入

    以下内容为本人学习 Spring Boot的依赖注入和自动注入 与ChatGpt提问后对其回答 进行部分修改 (有的错误实在是离谱 = =)、格式调整等操作后的答案, 可能对于其中部分细节(是错是对,能力有限有的看不出来 = =),并未做深入探究 ,大家感兴趣的话可以自行验证。 依赖注

    2024年02月06日
    浏览(46)
  • <Vue>使用依赖注入的方式共享数据

    Vue是一个用于构建用户界面的渐进式框架。 它提供了一种简单而灵活的方式来管理组件之间的数据流,即依赖注入(Dependency Injection,DI)。 依赖注入是一种设计模式,它允许一个组件从另一个组件获取它所依赖的数据或服务,而不需要自己创建或管理它们。这样可以降低组

    2024年02月05日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包