Spring中的FactoryBean工厂简单实现
Spring中许多地方都使用到了工厂模式,现在我们根据Spring提供的接口创建一个工厂,了解Spring中FactoryBean的实现原理。
首先我们创建一个Phone类
public class Phone {
//手机品牌
private String logo;
//手机芯片
private String cpu;
/*省略getter,setter等方法*/
}
接下来我们创建一个FactoryBean的实现类,在Spring中实现了FactoryBean接口的类都会被Spring识别为工厂,会自动调用该工厂的方法来创建实例对象。
package spring.stu.beanFactory;
import org.springframework.beans.factory.FactoryBean;
import spring.stu.bean.Phone;
/**
* 实现了FactoryBean的接口的类可以被Spring识别
* Spring会自动调用工厂类创建实例
*/
public class MyFactoryBeanStu implements FactoryBean<Phone> {
/**
* 返回创建的实例对象
* @return
* @throws Exception
*/
@Override
public Phone getObject() throws Exception {
System.out.println("Spring调用工厂方法帮你创建实例对象");
Phone p = new Phone("华为","麒麟995");
return p;
}
/**
* 返回创建的对象的类型
* @return
*/
@Override
public Class<?> getObjectType() {
return Phone.class;
}
/**
* 该工厂所创建的对象是否为单例
* @return
*/
@Override
public boolean isSingleton() {
return false;
}
}
之后我们去配置文件中注册工厂对应的bean
<bean id="myFactoryBean" class="spring.stu.beanFactory.MyFactoryBeanStu">
</bean>
然后我们在测试类中进行测试:
@Test
public void test1() {
ApplicationContext ac = new ClassPathXmlApplicationContext("ioc.xml");
Object bean = ac.getBean("myFactoryBean");
System.out.println(bean);
}
测试结果如下:
Spring调用工厂方法帮你创建实例对象
Phone{logo='华为', cpu='麒麟995'}