4初始化IoC容器
IoC容器管理bean有三种方式
- 基于XML管理Bean
- 基于注解配置Bean
- 基于Java代码配置Bean
XML管理对象(bean)
<!--什么属性都不写,默认调用的是空构造函数-->
<bean id="appleA" class="com.torey.spring.ioc.entity.Apple">
</bean>
实例化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>
利用构造方法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>
基于静态工厂实例化
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;
}
}
<!--利用静态方法获取对象-->
<bean id="apple4" class="com.torey.spring.ioc.factory.AppleStaticFactory" factory-method="createSweetApple"></bean>
基于工厂实例方法实例化
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;
}
}
<!--利用工厂实例方法获取对象,需要创建两个bean -->
<bean id="appleInstanceFactory" class="com.torey.spring.ioc.factory.AppleInstanceFactory"></bean>
<bean id="apple5" factory-bean="appleInstanceFactory" factory-method="createSweetApple"></bean>
导航,上一页,下一页
支持我-微信扫一扫-加入微信公众号
赞赏作者
![赞赏作者](https://img.znyd365.com/torey/Aseven/zanShang2.jpg)