DI(Dependency Injection),依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件中
例如在spring学习笔记之IOC中如果UserServiceImpl的实现类中有一个属性,并且拥有对应的set方法,那么使用Spring框架的IOC功能时,可以通过依赖注入把该属性的值传入进来具体配置如下
<bean id="userService" class="com.hw.server.impl.UserServiceImpl">
<property name="uname" value="张三"/>
</bean>
Spring框架的几种注入方式
构造函数注入
编写Java类,提供构造函数
private String name;
private String password;
public UserServiceImpl(String name, String password) {
this.name = name;
this.password = password;
}
编写配置文件
<bean id="userService" class="com.hw.server.impl.UserServiceImpl">
<constructor-arg name="name" value="张三"/>
<constructor-arg name="password" value="19"/>
</bean>
属性的setter方法的注入方式
setter方法注入,只需要提供对应属性的stterr方法,按照如下配置文件编写配置即可
<bean id="person" class="com.hw.entity.Person">
<property name="pname" value="美美"/>
<property name="car2" ref="car2"/>
</bean>
数组,集合(List,Set,Map),Properties等的注入
如果是数组或者List集合,注入配置文件的方式是一样的,如下所示
<bean id="collectionBean" class="com.hw.learn1.entity.CollectionBean">
<property name="args">
<list>
<value>张三</value>
<value>李四</value>
</list>
</property>
</bean>
如果是Set集合,注入的配置文件方式如下:
<property name="sets">
<set>
<value>张三</value>
<value>李四</value>
</set>
</property>
如果是Map集合,注入的配置方式如下:
<property name="map">
<map>
<entry key="张三" value="38"/>
<entry key="李四" value="38"/>
<entry key="王五" value="29"/>
</map>
</property>