002.初始话Ioc容器——基于构造方法实例化对象(Bean)
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"/>