DI是依赖注入的意思,给Bean组件注入依赖。
注入说法有点难懂,其实就是给Bean组件传递参数,因为构造对象时需要参数,也需要配置一下参数从何而来。
引用和被引用的组件都必须在IOC容器之中。
<?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">
<!-- 1. 单个参数构造注入-->
<!-- 步骤一,将他们都存放在ioc容器之中-->
<bean id="UserDao" class="com.atguitu.ioc_02.UserDao"></bean>
<bean id="UserService" class="com.atguitu.ioc_02.UserService">
<!-- 在标签内部指定构造参数,传值 DI的配置
constructor-arg 构造参数传值的 DI配置
value 直接属性值 String name=“二狗子”
ref 引用其他的bean的ID值
-->
<constructor-arg ref="UserDao"></constructor-arg>
</bean>
</beans>
<!-- 1. 多个参数注入-->
<bean id="UserService" class="com.atguitu.ioc_02.UserService">
<!-- 方法一:构造参数的顺序填写 value直接赋值 ref引用Bean id赋值-->
<constructor-arg value="18"></constructor-arg>
<constructor-arg value="二狗子"></constructor-arg>
<constructor-arg ref="UserDao"></constructor-arg>
</bean>
<bean id="UserService2" class="com.atguitu.ioc_02.UserService">
<!-- 方法二:构造参数的名字填写 value直接赋值 ref引用Bean id赋值-->
<constructor-arg name="age" value="18"></constructor-arg>
<constructor-arg name="name" value="二狗子"></constructor-arg>
<constructor-arg name="userDao" ref="UserDao"></constructor-arg>
</bean>
<bean id="UserService3" class="com.atguitu.ioc_02.UserService">
<!-- 方法三:构造参数的下角标填写 value直接赋值 ref引用Bean id赋值-->
<constructor-arg index="0" value="18"></constructor-arg>
<constructor-arg index="1" value="二狗子"></constructor-arg>
<constructor-arg index="2" ref="UserDao"></constructor-arg>
</bean>
<!-- 触发set方法注入-->
<bean id="MovieFinder" class="com.atguitu.ioc_02.MovieFinder"></bean>
<bean id="SimpleMovieLister" class="com.atguitu.ioc_02.SimpleMovieLister">
<!-- name 是调用方法的名字-->
<!-- value | ref 二选一 ,value是直接赋值 ref是引用类型赋值-->
<property name="movieName" value="消失的他"></property>
<property name="movieFinder" ref="MovieFinder"></property>
</bean>
推荐阅读: