Spring的依赖注入

Posted 呼呼睡觉睡觉啦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的依赖注入相关的知识,希望对你有一定的参考价值。

依赖注入

  Dependency InjectionIoc的作用:降低程序间的耦合(依赖关系)

依赖关系的管理:

  以后都交给Spring来维护在当前类中需要用到其他类的对象,由Spring为我们提供,我们只需要在配置文件中说明依赖关系的维护就是依赖注入

依赖注入能注入的数据:有三类

  基本数据类型和String

  其他bean类型(在配置文件中或者注解配置过的bean)

  复杂类型/集合类型

注入的方式:

  第一种:使用构造函数提供

  第二种:使用set方法提供

  第三种:使用注解提供

构造函数注入

  使用的标签:constructor-arg

  标签中的属性:

  type:注入数据的数据类型,该数据类型也是构造函数中某个或某些参数的类型

  index:用于指定要注入的数据给构造函数中指定索引位置参数赋值。索引位置从0开始。

  name:用于给构造函数指定名称的参数赋值

  value:用于提供基本类型和String类型的数据

  ref:用于指定其他的bean类型数据。它指的就是在Spring容器中出现过的bean对象

 

  优势:在获取Bean对象时,注入的数据是必须的操作,否则无法创建Bean。

  弊端:改变bean对象的实例化的方式,使我们在创建对象的时候,如果用不到这些数据,也必须提供。

<bean id="accountService" class="com.xuefei.service.impl.AccountServiceImpl">
        <constructor-arg name="name" value="小李"></constructor-arg>
        <constructor-arg name="age" value="20"></constructor-arg>
        <constructor-arg name="date" ref="now"></constructor-arg>
    </bean>
    <bean id="now" class="java.util.Date"></bean>
package com.xuefei.service.impl;

import com.xuefei.service.AccountService;

import java.util.Date;

/**
 * 账户业务层实现类
 */
public class AccountServiceImpl implements AccountService {

    String name;
    Integer age;
    Date date;

    public AccountServiceImpl(String name, Integer age,Date date) {
        this.name = name;
        this.age = age;
        this.date = date;
        System.out.println("我是"+name+"今年"+age+"岁了!"+date);
    }

    public void saveAccount() {
    }
}

 

以上是关于Spring的依赖注入的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

Android 片段和依赖注入

Android片段和依赖注入

Spring依赖注入的方式

spring依赖注入,和控制反转。用自己的话说是怎么说的。最好能够用代码来解释

Spring设置注入和构造注入的区别