基本操作-基于xml配置方式组件管理

发布时间 2023-09-12 22:23:35作者: 微风抚秀发

组件信息声明配置(IOC 控制反转)

案例中设计的类
package com.wind.ioc_01;
public class HappyComponent {
    //默认包含无参数构造函数
    public void doWork() {
        System.out.println("HappyComponent.doWork");
    }
}
```xml
<!--   2. 工厂模式实例化对象。定义使用静态工厂方法进行 ioc的配置
factory-method: 指定静态工厂方法,注意,该方法必须是static方法
-->
<bean id="clientService" class="com.wind.ioc_01.ClientService" factory-method="createInstance"></bean>

<!--   3. 实例工厂方法实例化 使用实例工厂方法进行 ioc的配置-->
<!--   3.1.先将工厂类进行ioc配置 -->
<bean id="defaultServiceLocator" class="com.wind.ioc_01.DefaultServiceLocator"></bean>

<!-- 3.2.根据工厂对象的实例工厂方法进行实例化组件对象
 - factory-bean属性:指定当前容器中工厂Bean 的名称。
- factory-method:  指定实例工厂方法名。注意,实例方法必须是非static的!

-->

###组件 依赖注入(DI) 配置
```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">
    <!--ioc  注入(DI)的配置-->

    <!--   1. 基于构造函数的依赖注入  单参数-->
    <bean id="userDao" class="com.wind.ioc_02.UserDao"/>
    <bean id="userService" class="com.wind.ioc_02.UserService">
        <!--       构造函数引用  这里填入构造器需要的参数-->
        <constructor-arg ref="userDao"></constructor-arg>
    </bean>

    <!--   2. 基于构造函数的依赖注入(多构造参数解析)-->
    <bean id="userService2" class="com.wind.ioc_02.UserService">
        <!--   name属性指定参数名、
        ref 引用其他bean的标识。
        index属性指定参数角标、
        value属性指定基本类型值-->
        <!--      在填入参数时 存在三种方式  1.按顺序填写 2.按参数名填写  (强烈推荐)  3.按索引填写  -->
        <!--        参数名填写-->
        <constructor-arg name="age" value="18"></constructor-arg>
        <constructor-arg name="name" value="王二狗"></constructor-arg>
        <constructor-arg name="userDao" ref="userDao"></constructor-arg>

        <!--顺序填写
        <constructor-arg value="18"></constructor-arg>
        <constructor-arg  value="王二狗"></constructor-arg>
        <constructor-arg  ref="userDao"></constructor-arg>
        按索引填写
        <constructor-arg index="0" value="18"></constructor-arg>
        <constructor-arg index="1" value="王二狗"></constructor-arg>
        <constructor-arg index="2" ref="userDao"></constructor-arg> -->
    </bean>
    <!-- 3. 基于Setter方法依赖注入   -->
    <bean id="movieFinder" class="com.wind.ioc_02.MovieFinder"></bean>
    <bean id="simpleMovieLister" class="com.wind.ioc_02.SimpleMovieLister">
        <!-- setter方法,注入movieFinder对象的标识id
      name = set方法标识(取值时 去掉 set 以及set后的第一个字母小写)
        ref = 引用bean的id值 -->
        <property name="movieFinder" ref="movieFinder"></property>
<!--        value属性代表基本属性值-->
        <property name="movieName" value="二狗"></property>
    </bean>
</beans>