FactoryBean是Spring规定的一个接口,当前接口的实现类,Spring都会将其作为一个工厂,但是在ioc容器启动的时候不会创建实例,只有在使用的时候才会创建对象。
用代码看一下是什么意思:
/**
* 实现了FactoryBean接口的类是Spring中可以识别的工厂类,spring会自动调用工厂方法创建实例
*/
public class MyFactoryBean implements FactoryBean<Person> {
/**
* 工厂方法,返回需要创建的对象
* @return
* @throws Exception
*/
@Override
public Person getObject() throws Exception {
Person person = new Person();
person.setName("lisi");
return person;
}
/**
* 返回创建对象的类型,spring会自动调用该方法返回对象的类型
* @return
*/
@Override
public Class<?> getObjectType() {
return Person.class;
}
/**
* 创建的对象是否是单例对象
* @return
*/
@Override
public boolean isSingleton() {
return false;
}
}
<bean id="myFactorybean" class="com.pojo.factory.MyFactoryBean"></bean>
无论是单例还是多例,如果不getBean,那么person对象则不会被创建。
之前单例的时候,无论getBean还是不getBean, person都会被创建
之前多例的时候,只有getbean,person才会被创建。
在spring的源码里,FactoryBean 这个东西经常会出现,还有一个BeanFactory接口,BeanFactory接口主要是定义了一些规范。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!