bean的三种实例化方式(基于配置文件XML)

    在讲诉bean的实例化方式之前,先了解下Spring框架的核心api:

BeanFactory:这是一个工厂,用于生成任意的bean。采取延迟加载,第一次getBean的时候才会初始化Bean。

ApplicationContext:是BeanFactory的子接口,功能更强大。(国际化处理、事件传递、Bean自动装配、各种不同应用层的Context的实现)。当配置文件被加载时,就进行对象实例化。

ClassPathXmlApplicationContext:用于加载classpath(类路径、src)下的xml。

FileSystemXmlApplicationContext:用于加载指定盘符下的xml

    下面开始讲解bean的三种实例化方式:默认构造、静态工厂、实例工厂。

第一种:默认构造

<bean  id=""  class="">  必须提供默认构造

第二种:静态工厂

静态工厂:用于生成实例对象,所有的方法必须是static

<bean  id=""  class="工厂全限定类名"  factory-method="静态方法">

工厂:

public class MyBeanFactory {
	
	//创建实例
	public static UserService createService(){
		return new UserServiceImpl();
	}
}

Spring配置文件:

<!-- 将静态工厂创建的实例交予spring 
	class 确定静态工厂全限定类名
	factory-method 确定静态方法名
-->
<bean id="userServiceId" class="com.zju.static_factory.MyBeanFactory" factory-method="createService"></bean>

第三种:实例工厂

实例工厂:必须先有工厂实例对象,通过实例对象再创建对象。提供所有的方法都是“非静态”的。

//实例工厂,所有的方法都是非静态的
public class MyBeanFactory {
	
	//创建实例
	public UserService createService(){
		return new UserServiceImpl();
	}
}

Spring配置文件:

<!-- 创建工厂实例 -->
<bean id="myBeanFactoryId" class="com.zju.factory.MyBeanFactory"></bean>
<!-- 获得userservice 
	* factory-bean 确定工厂实例
	* factory-method 确定普通方法
-->
<bean id="userServiceId" factory-bean="myBeanFactoryId" factory-method="createService"></bean>


猜你喜欢

转载自blog.csdn.net/pcwl1206/article/details/80645823