1.三种XML实例化Bean的配置方式
1.基于构造方法实例化对象
2.基于静态工厂实例化对象
3.基于工厂实例方法实例化对象
2.详细讲解
2.1 基于构造方法实例化对象
2.1.1 基于构造方法实例化对象,bean标签默认通过构造方法构造对象,默认使用无参构造
<!--bean标签默认通过构造方法构造对象-->
<bean id="apple1" class="com.imooc.spring.ioc.entity.Apple">
</bean>
2.1.2 基于构造方法实例化对象,使用带参构造实例化对象,根据参数位置实例化对象
<!--使用带参构造实例化对象-->
<bean id="apple2" class="com.imooc.spring.ioc.entity.Apple">
<constructor-arg name="title" value="红富士"/>
<constructor-arg name="color" value="红色"/>
<constructor-arg name="origin" value="欧洲"/>
<constructor-arg name="price" value="11.98"/>
</bean>
<!--根据参数的位置实例化对象-->
<bean id="apple3" class="com.imooc.spring.ioc.entity.Apple">
<constructor-arg index="0" value="红富士"/>
<constructor-arg index="1" value="红色"/>
<constructor-arg index="2" value="欧洲"/>
<constructor-arg index="3" value="11.98"/>
</bean>
2.2 基于静态工厂实例化对象
/**
* 静态工厂通过静态方法创建对象,隐藏对象细节
*/
public class AppleStaticFactory
{
public static Apple createSweetApple()
{
Apple apple = new Apple();
apple.setTitle("红富士");
apple.setOrigin("欧洲");
apple.setColor("红色");
return apple;
}
}
<!--利用静态工厂获取对象-->
<bean id="apple4" class="com.imooc.spring.ioc.factory.AppleStaticFactory" factory-method="createSweetApple"/>
2.2 基于工厂实例化对象
/**
* 工厂实例方法创建对象是指Ioc容器对工厂类进行实例化并调用对应的实例方法创建对象的过程
*/
public class AppleFactoryInstance
{
public Apple createSweetApple()
{
Apple apple = new Apple();
apple.setTitle("红富士");
apple.setOrigin("欧洲");
apple.setColor("红色");
return apple;
}
}
<!--利用工厂实例化方法获取对象-->
<bean id="factoryInstance" class="com.imooc.spring.ioc.factory.AppleFactoryInstance"/>
<bean id="apple5" factory-bean="factoryInstance" factory-method="createSweetApple"/>