# 4初始化IoC容器
IoC容器管理bean有三种方式
- 基于XML管理Bean
- 基于注解配置Bean
- 基于Java代码配置Bean
# XML管理对象(bean)
<!--什么属性都不写,默认调用的是空构造函数-->
<bean id="appleA" class="com.torey.spring.ioc.entity.Apple">
</bean>
1
2
3
2
3
实例化Bean的三种方式
- 基于构造方法对象实例化
- 基于静态工厂实例化
- 基于工厂实例方法实例化
在实际项目中,有90%是基于构造方法对象实例化
# 利用构造方法
# 利用构造方法参数名实例化
<bean id="appleB" class="com.torey.spring.ioc.entity.Apple">
<!--没有constructor-arg 则代表调用默认构造方法实例化-->
<constructor-arg name="color" value="黄色"></constructor-arg>
<constructor-arg name="origin" value="中国"></constructor-arg>
<constructor-arg name="title" value="金帅"></constructor-arg>
</bean>
1
2
3
4
5
6
2
3
4
5
6
# 利用构造方法index实例化-实际一般不采用
<bean id="apple3" class="com.torey.spring.ioc.entity.Apple">
<!--这种方式一般不用-->
<constructor-arg index="0" value="黄色1"></constructor-arg>
<constructor-arg index="1" value="中国1"></constructor-arg>
<constructor-arg index="2" value="金帅1"></constructor-arg>
</bean>
1
2
3
4
5
6
2
3
4
5
6
# 基于静态工厂实例化
package com.torey.spring.ioc.factory;
import com.torey.spring.ioc.entity.Apple;
/**
* 静态工厂通过静态方法创建对象,隐藏创建对象的细节
*/
public class AppleStaticFactory {
public static Apple createSweetApple(){
Apple apple=new Apple();
apple.setColor("红色");
apple.setOrigin("欧洲");
apple.setTitle("红富士");
return apple;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--利用静态方法获取对象-->
<bean id="apple4" class="com.torey.spring.ioc.factory.AppleStaticFactory" factory-method="createSweetApple"></bean>
1
2
2
# 基于工厂实例方法实例化
package com.torey.spring.ioc.factory;
import com.torey.spring.ioc.entity.Apple;
/**
* 工厂实例方法创建对象是指IoC容器对工厂类进行实例化并调用对应的实例方法创建对象的过程
*/
public class AppleInstanceFactory {
public Apple createSweetApple(){
System.out.println(this.getClass().getName());
Apple apple=new Apple();
apple.setColor("红色");
apple.setOrigin("欧洲");
apple.setTitle("红富士");
return apple;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--利用工厂实例方法获取对象,需要创建两个bean -->
<bean id="appleInstanceFactory" class="com.torey.spring.ioc.factory.AppleInstanceFactory"></bean>
<bean id="apple5" factory-bean="appleInstanceFactory" factory-method="createSweetApple"></bean>
1
2
3
2
3