FactoryBean 和BeanFactory 虽然名字类似,但是使用场景完全不同
FactoryBean 是 工厂类,一般应用场景是手动创建bean注入容器时使用
BeanFactory 是bean 容器,管理bean 实例allBeanNamesByType已经bean 定义beanDefinitionMap,并且提供获取和设置bean 的方法,例如:public T getBean(Class requiredType)
其中最重要的bean是DefaultListableBeanFactory
FactoryBean 案例
public class FactoryBeanServiceImpl implements FactoryBeanService{
@Override
public void testFactoryBean() {
System.out.println("测试端口");
}
}
@Component
public class FactoryBeanServiceBean implements FactoryBean {
@Override
public Object getObject() throws Exception {
return new FactoryBeanServiceImpl();
}
public Class<?> getObjectType() {
return FactoryBeanService.class;
}
public boolean isSingleton() {
return true;
}
}
public interface FactoryBeanService {
void testFactoryBean();
}
在创建FactoryBeanService 的时候调用的是FactoryBeanServiceBean.getObject() 方法