1. 依赖注入方式【重点】
问题导入
依赖注入有几种方式?
1.1 依赖注入的两种方式
setter注入
简单类型
引用类型(很常用)
构造器注入
简单类型
引用类型
1.2 setter方式注入
问题导入
setter方式注入使用什么子标签?
引用类型
简单类型
1.3 构造方式注入
问题导入
构造方式注入使用什么子标签?
引用类型
简单类型
参数适配【了解】
1.4 依赖注入方式选择
强制依赖使用构造器进行,使用setter注入有概率不进行注入导致null对象出现
可选依赖使用setter注入进行,灵活性强
Spring框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨
如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用setter注入完成可选依赖的注入
实际开发过程中还要根据实际情况分析,如果受控对象没有提供setter方法就必须使用构造器注入
自己开发的模块推荐使用setter注入
2. 依赖自动装配【理解】
问题导入
如何配置按照类型自动装配?
2.1 自动装配概念
IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配
自动装配方式
按类型(常用)
按名称
按构造方法
不启用自动装配
2.2 自动装配类型
依赖自动装配
配置中使用bean标签autowire属性设置自动装配的类型
<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/> <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" autowire="byType"/>
依赖自动装配特征
自动装配用于引用类型依赖注入,不能对简单类型进行操作
使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用
使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用
自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效
3. 集合注入
3.1 注入数组类型数据
<property name="array"> <array> <value>100</value> <value>200</value> <value>300</value> </array> </property>
3.2 注入List类型数据
<property name="list"> <list> <value>itcast</value> <value>itheima</value> <value>boxuegu</value> <value>chuanzhihui</value> </list> </property>
3.3 注入Set类型数据
<property name="set"> <set> <value>itcast</value> <value>itheima</value> <value>boxuegu</value> <value>boxuegu</value> </set> </property>
3.4 注入Map类型数据
<property name="map"> <map> <entry key="country" value="china"/> <entry key="province" value="henan"/> <entry key="city" value="kaifeng"/> </map> </property>
3.5 注入Properties类型数据
<property name="properties"> <props> <prop key="country">china</prop> <prop key="province">henan</prop> <prop key="city">kaifeng</prop> </props> </property>
说明:property标签表示setter方式注入,构造方式注入constructor-arg标签内部也可以写<array>、<list>、<set>、<map>、<props>标