1. 程式人生 > >JavaEE Bean例項化——例項工廠例項化

JavaEE Bean例項化——例項工廠例項化

還有一種例項化Bean的方式是採用是例項工廠,此種方式的工廠類中不再使用靜態方法建立Bean例項,而是採用直接建立Bean例項的方式,同時在配置檔案中,需要例項化的Bean也並不是通過ckass屬性直接指向的例項化類,而是通過factory-bean屬性指向配置的例項化工廠,然後使用factory-method屬性確定使用工廠中的哪個方法,下面通過一個案例來演示例項化工廠方式的使用。

1、在chapter02專案的src目錄下,建立一個com.itheima.instance.factory包,在包中建立一個Bean2類,不需新增任何方法:

package com.itheima.instance.factory;

public class Bean3 {

}

2、在com.itheima.instance.factory包中,建立工廠類MyBeanFactory,在類中使用預設無參構造方法輸出“bean3工廠例項化中”語句,如下面程式碼所示:

package com.itheima.instance.factory;

public class MyBean3Factory {
	public MyBean3Factory() {
		System.out.println("bean3共廠例項化中");
	}
    //建立Bean3的例項化方法
	public Bean3 createBean() {
		return new Bean3();
	}

}

3、在com.itheima.instance.factory包中,建立Spring配置檔案beans3.xml,設定相關配置後如下面程式碼所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
        <bean id="MyBean3Factory" class="com.itheima.instance.factory.MyBean3Factory" />
        
        <bean id="bean3" factory-bean="MyBean3Factory" factory-method="createBean" />
</beans>

在上面的程式碼中,首先配置了一個工廠Bean,然後配置了需要例項化的Bean,在id為bean3的Bean中,使用factory-bean屬性指向配置的例項工廠,該屬性就是工廠Bean的id。使用factory-method來指向工廠中的createBean()方法。

4、在com.itheima.instance.factory包中,建立一個測試類InstanceTest3,來測試使用靜態工廠方式是否能夠例項化Bean,編輯後代碼如下:

package com.itheima.instance.factory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class InstanceTest3 {

	private static ApplicationContext beanlizi;

	public static void main(String[] args) {
		String xmlPath = "com/itheima/instance/factory/beans3.xml";
		beanlizi = new ClassPathXmlApplicationContext(xmlPath);
		System.out.println(beanlizi.getBean("bean3"));

	}

}

執行程式後,控制檯輸出結果如圖所示: