文章目录
依赖注入
Dependency Injection
IOC的作用
降低程序间的耦合(依赖关系)
依赖关系的管理
都交给spring来维护
在当前类需要用到其他类的对象,由spring为我们提供,我们只需要在配置文件中说明
依赖关系的维护,就称之为依赖注入
注入的方式:有三种
第一种:使用构造函数提供
使用的标签:constructor-arg
标签中的属性
name:
用于指定给构造函数中指定名称的参数赋值【常用】type:
用于指定要注入的数据的数据类型,该数据类型也是构造函数中某个或某些参数的类型index:
用于指定要注入的数据给构造函数中指定索引位置的参数赋值。索引的位置是从0开始
value
:用于提供基本类型和String类型的数据ref
:用于指定其他的bean类型数据。它指的就是在spring的Ioc核心容器中出现过的bean对象
**优势:**在获取bean对象时,注入数据是必须的操作,否则对象无法创建成功
**劣势:**改变了bean对象的实例化方式,使我们在创建对象时,如果用不到这些数据,也必须提供
package com.compance.spring02.service.impl;
import com.compance.spring02.service.IAccountService;
import java.util.Date;
/**
* 账户的业务层实现类
*/
public class AccountServiceImpl implements IAccountService {
// 举例使用
private String name;
private Integer age;
private Date birthday;
public AccountServiceImpl(String name, Integer age, Date birthday) {
this.name = name;
this.age = age;
this.birthday = birthday;
}
public void saveAccount(){
System.out.println("service中的saveAccount执行了"+name+","+age+","+birthday);
}
}
<!--spring依赖注入-->
<bean id="accountService" class="com.compance.spring02.service.impl.AccountServiceImpl" scope="prototype">
<!--<constructor-arg type="java.lang.String" value="Tom"></constructor-arg>-->
<constructor-arg name="name" value="Lisa"></constructor-arg>
<constructor-arg name="age" value="20"></constructor-arg>
<constructor-arg name="birthday" ref="now"></constructor-arg>
</bean>
<!-- 配置一个日期对象 -->
<bean id="now" class="java.util.Date"></bean>
public s