组件信息声明配置(IOC 控制反转)
案例中设计的类
package com.wind.ioc_01;
public class HappyComponent {
//默认包含无参数构造函数
public void doWork() {
System.out.println("HappyComponent.doWork");
}
}
<!-- 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>