1. 程式人生 > >bean的三種例項化方式(基於配置檔案XML)

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>