spring bean 实例工厂实例化
spring bean 实例工厂实例化
在工厂类中创建一个实例方法来实例化对象。在配置bean时需要使用factory-bean属性指定配置的实例工厂,同时还需要使用factory-method属性指定实例工厂中的实例方法
1.创建工厂类BeanInstanceFactory
package instance;
public class BeanInstanceFactory {
public BeanClass createBeanClassInstance() {
return new BeanClass("调用实例工厂方法实例化bean");
}
}
2.编辑配置文件
<?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.xsd">
<bean id="constructorInstance" class="instance.BeanClass">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- 静态工厂实例化bean -->
<bean id="staticFacoryInstance" class="instance.BeanStaticFactory" factory-method="createInstance">
</bean>
<!-- 配置工厂 -->
<bean id="myFactory" class="instance.BeanInstanceFactory">
</bean>
<!-- 实例工厂实例化bean -->
<bean id="instanceFacoryInstance" factory-bean="myFactory" factory-method="createBeanClassInstance">
</bean>
</beans>
3.添加测试代码
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import instance.BeanClass;
public class TestInstance {
public static void main(String[] args) {
ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext.xml");
BeanClass b1 = (BeanClass)appCon.getBean("constructorInstance");
System.out.println(b1+b1.message);
//测试静态工厂实例化bean
BeanClass b2 =(BeanClass)appCon.getBean("staticFacoryInstance");
System.out.println(b2+b2.message);
//测试实例广场实例化bean
BeanClass b3 =(BeanClass)appCon.getBean("instanceFacoryInstance");
System.out.println(b3+b3.message);
}
}