spring依赖注入深入理解

IOC&&DI

IOC(Inversion of Control)一般分为两种类型:依赖注入DI(Dependency Injection)和依赖查找(Dependency Lookup)

org.springframework.beans.factory.BeanFactory是IOC容器的具体实现,是Spring IOC容器的核心接口

Spring IOC负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期。

优点:把应用的代码量降到最低。最小代价和最小侵入式是松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载

DI依赖注入是IOC的一个方面,不需要创建对象,只需描述如何被创建,在配置文件中描述组件需要哪些服务,之后IOC容器进行组装

IOC的注入方式:1、构造器依赖注入 2、Setter方法注入 3、工厂方法注入(很少使用)

Setter方法注入

通过Setter方法注入bean的属性值或依赖的对象,是最常用的注入方式

<!-- property来配置属性
	name为属性名
 	value为属性值
-->
<bean id="helloWorld" class="com.zhanghe.study.spring4.beans.helloworld.HelloWorld">
 <property name="name" value="Spring Hello"/>
</bean>

构造器注入

构造器注入需要提供相应的构造器

<!-- 可以使用index来指定参数的顺序,默认是按照先后顺序 -->
<bean id="car" class="com.zhanghe.study.spring4.beans.beantest.Car">
 <constructor-arg value="法拉利" index="0"/>
 <constructor-arg value="200" index="1"/>
</bean>

但是如果存在重载的构造器的话,只使用index索引方式无法进行精确匹配,还需要使用类型type来进行区分,index和type可以搭配使用

public Car(String brand, double price) {
 this.brand = brand;
 this.price = price;
}

public Car(String brand, int speed) {
 this.brand = brand;
 this.speed = speed;
}
<bean id="car" class="com.zhanghe.study.spring4.beans.beantest.Car">
 <constructor-arg value="法拉利" index="0"/>
 <constructor-arg value="20000.0" type="double"/>
</bean>

<bean id="car2" class="com.zhanghe.study.spring4.beans.beantest.Car">
 <constructor-arg value="玛莎拉蒂" index="0"/>
 <constructor-arg value="250" type="int"/>
</bean>

到此这篇关于spring依赖注入深入理解的文章就介绍到这了,更多相关spring依赖注入内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot的拦截器中依赖注入为null的解决方法

    该项目是基于SpringBoot框架的Maven项目. 今天在拦截器中处理拦截逻辑时需要使用注解调用其他方法 并且要从配置文件中读取参数.所以我使用了以下注解: @Reference CoreRedisService redisService; @Value("${channel}") private String channel; @Value("${allowMethod}") private String allowMethod; 一个是获取接口的引用,两外两

  • 详解Spring基于xml的两种依赖注入方式

    1)使用构造器注入bean 实体类:用户类 public class User { private String name; private UserMessage userMessage; public User() { } public User(String name, UserMessage userMessage) { this.name = name; this.userMessage = userMessage; } public String getName() { return

  • 理解Spring中的依赖注入和控制反转

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解. IoC是什么 Ioc-InversionofControl,即"控制反转",不是什么技术,而是一种设计思想.在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内

  • Spring bean的实例化和IOC依赖注入详解

    前言 我们知道,IOC是Spring的核心.它来负责控制对象的生命周期和对象间的关系. 举个例子,我们如何来找对象的呢?常见的情况是,在路上要到处去看哪个MM既漂亮身材又好,符合我们的口味.就打听她们的电话号码,制造关联想办法认识她们,然后...这里省略N步,最后谈恋爱结婚. IOC在这里就像婚介所,里面有很多适婚男女的资料,如果你有需求,直接告诉它你需要个什么样的女朋友就好了.它会给我们提供一个MM,直接谈恋爱结婚,完美! 下面就来看Spring是如何生成并管理这些对象的呢? 1.方法入口 o

  • 浅谈Spring IoC容器的依赖注入原理

    本文介绍了浅谈Spring IoC容器的依赖注入原理,分享给大家,具体如下: IoC容器初始化的过程,主要完成的工作是在IoC容器中建立 BeanDefinition 数据映射,并没有看到IoC容器对Bean依赖关系进行注入, 假设当前IoC容器已经载入用户定义的Bean信息,依赖注入主要发生在两个阶段 正常情况下,由用户第一次向IoC容器索要Bean时触发 但我们可以在 BeanDefinition 信息中通过控制 lazy-init 属性来让容器完成对Bean的预实例化,即在初始化的过程中就

  • spring依赖注入深入理解

    IOC&&DI IOC(Inversion of Control)一般分为两种类型:依赖注入DI(Dependency Injection)和依赖查找(Dependency Lookup) org.springframework.beans.factory.BeanFactory是IOC容器的具体实现,是Spring IOC容器的核心接口 Spring IOC负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期. 优点:把应用的代码量降到最低.最小代价和最小侵入式是松

  • Spring依赖注入的三种方式实例详解

    Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个类: 接口 Logic.java 接口实现类 LogicImpl.java 一个处理类 LoginAction.java 还有一个测试类 TestMain.java Logic.java如下: package com.spring.test.di; public interface Logic { pub

  • Spring依赖注入的三种方式小结

    Spring的主要特性包括IOC和DI,其中DI是IOC的基础.在以前的Spring使用过程中大部分都是使用XML配置文件显式配置spring组件,导致大量的XML配置文件以及冗余的XML配置代码.阅读<Spring in Action>后总结Spring的DI功能的三种主要装配方式以及混合装配方式 根据注解自动装配 Spring中有非常丰富的注解,通过这些注解可以方便地配置Spring容器,使得Spring容器可以自动识别相关Bean并做自动注入装配. 使用注解 @Component注解:标

  • 对PHP依赖注入的理解实例分析

    本文实例讲述了对PHP依赖注入的理解.分享给大家供大家参考,具体如下: 看Laravel的IoC容器文档只是介绍实例,但是没有说原理,之前用MVC框架都没有在意这个概念,无意中在phalcon的文档中看到这个详细的介绍,感觉豁然开朗,复制粘贴过来,主要是好久没有写东西了,现在确实很懒变得! 首先,我们假设,我们要开发一个组件命名为SomeComponent.这个组件中现在将要注入一个数据库连接. 在这个例子中,数据库连接在component中被创建,这种方法是不切实际的,这样做的话,我们将不能改

  • 详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    一.spring依赖注入使用方式 @Autowired是spring框架提供的实现依赖注入的注解,主要支持在set方法,field,构造函数中完成bean注入,注入方式为通过类型查找bean,即byType的,如果存在多个同一类型的bean,则使用@Qualifier来指定注入哪个beanName的bean. 与JDK的@Resource的区别:@Resource是基于bean的名字,即beanName,来从spring的IOC容器查找bean注入的,而@Autowried是基于类型byType

  • spring依赖注入原理与用法实例分析

    本文实例讲述了spring依赖注入原理与用法.分享给大家供大家参考,具体如下: 一 点睛 控制反转和依赖注入在Spring环境下是等同的概念,控制反转是通过依赖注入实现的.所谓依赖注入指的是容器负责创建对象和维护对象间的依赖关系,而不是通过对象本身负责自己的创建和解决自己的依赖. 依赖注入的主要目的是为了解耦,体现一种组合的概念.如果你希望你的类具备某项功能的时候,是继承自一个具有次功能的父类好呢?还是组合另外一个具有此功能的类好呢?答案是不言而喻的,继承一个父类,子类和父类耦合了,组合另外一个

  • spring依赖注入知识点分享

    spring与IoC IoC:控制反转,将由代码操纵的对象控制权,交给第三方容器,反转给第三方容器.这种对象依赖的关系管理方式,称作 IoC.IoC是一个思想,概念.比较 著名的两种方式: DL(Dependency Lookup)依赖查找,典型的是JNDI.java名称与服务接口. DI(Dependency Injection)依赖注入.是目前最优秀的接耦合方式.典型应用spring. spring的DI 依赖注入,即:为属性赋值. xml实现 1)设值注入 底层调用属性的setter方法进

  • Spring 依赖注入实现示例

    [注]本文译自:https://springframework.guru/...   在本文中,我将向你展示如何在 Spring Framework 的依赖项注入中使用 Project Lombok 以获得最佳实践.   Spring 框架本身具有多种执行依赖项注入的方式.选项的灵活性是 Spring 框架的优势.但是,并非所有的依赖项注入选项都被视为最佳实践.有些实际上不太好. 依赖注入示例   我提供了一些设置示例,供我们查看必须使用的各种依赖项注入选项.   让我们以 Spring Ser

  • Spring依赖注入多种类型数据的示例代码

    目录 Student实体类 StudentsClass实体类 beans.xml 测试 Student实体类 package entity; import java.util.*; /** * @author LeDao * @company * @create 2022-02-13 21:26 */ public class Student { private int id; private String name; private StudentClass studentClass; pri

  • Spring依赖注入和控制反转详情

    目录 控制反转 什么是依赖? 紧耦合对象 松散耦合对象 依赖注入 为什么我们需要 IoC 容器? 以下是上面的重要问题 控制容器反转(IoC 容器) Spring 依赖注入 总结 前言: 在我们开始做任何事情之前,让我们先了解一下什么是控制反转.学习依赖注入和控制反转的概念,然后借助代码示例了解 Spring 框架如何支持它们. 控制反转 在我们开始做任何事情之前,让我们先了解一下什么是控制反转. 控制反转是面向对象编程中使用的术语,通过该术语,对象或对象集的控制权被赋予框架或由框架提供的容器.

随机推荐