spring bean 静态工厂实例化
在工厂类中创建一个静态方法来实例化对象。在配置bean时,class指定静态工厂类,同时还需要使用factory-method属性指定工厂类中的静态方法。
1.创建工厂类BeanStaticFactory
package instance;
public class BeanStaticFactory {
private static BeanClass beanInstance = new BeanClass("调用静态工厂方法实例化bean");
public static BeanClass createInstance() {
return beanInstance;
}
}
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>
</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);
}
}