一、自动装配
1.1、我们原先写代码的逻辑是如下形式的:
BookServiceImpl:
BookDaoImpl:
运行结果如下所示:
1.2、使用自动装配时:
只需要动xml文件中的配置即可、其他的代码就不需要改变了
注意1:使用自动装配的时候,要保证 依赖关系 private BookDao bookDao; 这个bookDao属性名要和xml配置文件中的第一个BookDaoImpl对象的id属性值一样,那么才能自动装配到该BookDaoImpl对象当中,才能private BookDao bookDao = new BookDaoImpl; 要不然会报错
运行结果和上面没运用自动装配的结果是一样的~
并且使用这种自动装配的方式后,被依赖的对象bean的id属性就可以省略了:
但是有一个问题需要注意:
二、集合注入
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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"> <!-- bean -->
<!--数组注入-->
<property name="array"> <!-- name属性值:对应的是被依赖对象中属性名 也就是说private int[] array;中的array -->
<array> <!-- 该标签表明要注入的是一个数组 -->
<value>100</value> <!-- 为被依赖对象中的属性赋值100 -->
<value>200</value> <!-- 为被依赖对象中的属性赋值200 -->
<value>300</value> <!-- 为被依赖对象中的属性赋值300 -->
</array>
</property>
<!--list集合注入-->
<property name="list">
<list>
<value>itcast</value>
<value>itheima</value>
<value>boxuegu</value>
<value>chuanzhihui</value>
</list>
</property>
<!--set集合注入-->
<property name="set">
<set>
<value>itcast</value>
<value>itheima</value>
<value>boxuegu</value>
<value>boxuegu</value>
</set>
</property>
<!--map集合注入-->
<property name="map">
<map>
<entry key="country" value="china"/>
<entry key="province" value="henan"/>
<entry key="city" value="kaifeng"/>
</map>
</property>
<!--Properties注入-->
<property name="properties">
<props>
<prop key="country">china</prop>
<prop key="province">henan</prop>
<prop key="city">kaifeng</prop>
</props>
</property>
</bean>
</beans>
AppForDICollection:
BookDaoImpl:
package com.itheima.dao.impl;
import com.itheima.dao.BookDao;
import java.util.*;
public class BookDaoImpl implements BookDao {
/**
* 简单类型----依赖关系 (下面五个属性)
*/
private int[] array;
private List<String> list;
private Set<String> set;
private Map<String,String> map;
private Properties properties;
/**
* setter注入方式 (必不能少的set方法)
*/
public void setArray(int[] array) {
this.array = array;
}
public void setList(List<String> list) {
this.list = list;
}
public void setSet(Set<String> set) {
this.set = set;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void save() {
System.out.println("book dao save ...");
System.out.println("遍历数组:" + Arrays.toString(array));
System.out.println("遍历List" + list);
System.out.println("遍历Set" + set);
System.out.println("遍历Map" + map);
System.out.println("遍历Properties" + properties);
}
}
结果如下所示: