美文网首页
spring依赖注入

spring依赖注入

作者: BscLiao | 来源:发表于2018-04-08 11:08 被阅读0次

详解可参考:https://blog.csdn.net/javazejian/article/details/54561302

依赖注入

什么是Spring的依赖注入?

依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。

有哪些不同类型的IOC(依赖注入)方式?

构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。
Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入?

你两种依赖方式都可以使用,构造器注入和Setter方法注入。最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖。

这里通过一个简单的例子来讲解依赖注入的两种方式,我们先创造一个Stage类,有了Stage就需要Performer,所以我们将Performer注入到Stage。

构造器注入和Setting注入

public class Performer {
    public void show() {
        System.out.println("表演ing...");
    }
}



public class Stage {
    private Performer performer;

   /* public void setPerformer(Performer performer) {
              this.performer = performer;
        }*/
  public Stage(Performer performer) {
        this.performer = performer;
    }

    public void start() {
        performer.show();
    }
}

编写xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
          http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <bean id="performer" class="Performer" />  
     <bean id="stage" class="Stage" >
<!--     使用constructor-arg则为构造器注入 -->
           <constructor-arg ref="performer"></constructor-arg>
    <!--     使用property则为setting注入
<property name="performer" ref="performer"></property> -->
      </bean>
</beans>

调用Stage的start方法

public class MyFirstTest {
    @Test
    public void testBean() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring-config.xml");
        Stage stage = (Stage) ac.getBean("stage",Stage.class);
        stage.start();
    }
}

构造器注入和setting注入都能得到bean只是xml配置的方式不一样,当然注入也可以注入普通值,方法和上述一样。
有的人可能不喜欢xml配置文件,spring提供了注解的方式同样可以实现注入。

注解方式注入@Autowired和@Qualifier

在讲解注解注入时,需要了解spring自动注入的四种方式(xml配置文件中bean的autowire属性)

byName:把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中,如果没有,则该属性不进行装配
byType:把与Bean的属性具有相同类型的其他Bean自动装配到Bean对应属性中,如果没有,则该属性不进行装配
constructor:把与Bean的构造器入参具有相同类型的其他Bean自动装配到Bean构造器的对应入参中
autodetect:首先尝试使用constructor进行自动装配,如果失败,再尝试使用byType

相关文章

  • Spring学习手册(5)—— bean作用域

    Spring学习手册(4)—— Spring 依赖注入中介绍了Spring依赖注入的基本方式以及各种类型的参数注入...

  • Spring学习之依赖注入

    Spring学习之依赖注入 依赖注入的基本概念 依赖注入(Dependecy Injection),也称为IoC(...

  • 2018-05-05

    spring源码分析(三) 目录五、Spring 源码解读--5.4、IOC 容器的依赖注入----1、依赖注入发...

  • Spring bean注解

    Spring自带依赖注入注解 @Required,依赖检查 @Autowired,根据Type注入 @Value,...

  • JAVA 核心笔记 || [xxx] Spring 之 依赖注入

    Spring 依赖注入 DL Spring 两种注入方式 Setter 方法注入 构造器注入 使用App.java...

  • 依赖注入

    依赖注入 Spring支持两种依赖注入方式,分别是属性注入和构造函数注入.除此之外,Spring 还支持工厂方法注...

  • spring源码解析-循环依赖

    讲解内容: spring的循环依赖---属性注入--自动注入 spring bean的生命周期 spring be...

  • 依赖注入的方式

    依赖注入: 依赖于某些方式给Bean的资源进行注入 Spring 支持三种依赖注入的方式 属性注入 构造器注入 工...

  • Spring 的属性注入

    Spring 的属性注入 Spring 的属性注入,我们可以理解成之前说过的 DI (依赖注入)。 注入方式 对于...

  • 69道Spring面试题和答案

    目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring...

网友评论

      本文标题:spring依赖注入

      本文链接:https://www.haomeiwen.com/subject/blsphftx.html