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注入(代码片段