DI依赖注入 xml配置方式

时间:2024-5-20    作者:老大夫    分类: SSM


DI是依赖注入的意思,给Bean组件注入依赖。

注入说法有点难懂,其实就是给Bean组件传递参数,因为构造对象时需要参数,也需要配置一下参数从何而来。

引用和被引用的组件都必须在IOC容器之中。

  1. 单个构造参数注入
<?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. 多个构造参数注入
<!--    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>
  1. 基于Set方法注入
<!--    触发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>


扫描二维码,在手机上阅读

推荐阅读: