JavaEE Bean例項化——例項工廠例項化
阿新 • • 發佈:2018-12-11
還有一種例項化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"));
}
}
執行程式後,控制檯輸出結果如圖所示: