FactoryBean
FactoryBean为Spring提供的一个接口。
直接尝试获取该类的实例并不会直接获取该类的实例,而是获得通过getObject获得的对象,即加工后的对象,该实例为一个工厂。
想获得该工厂的实例,需要在bean名称前加前缀“&”。
public interface FactoryBean<T> {
@Nullable
T getObject() throws Exception;
@Nullable
Class<?> getObjectType();
default boolean isSingleton() {
return true;
}
}
BeanFactory
BeanFactory为Spring IoC(控制翻转)提供的实际容器,封装在上下文中,通过getBean获取相应的对象。
GenericApplicationContext中封装了DefaultListableBeanFactory
public GenericApplicationContext() {
this.beanFactory = new DefaultListableBeanFactory();
}
DefaultListableBeanFactory相关类图如下:
很复杂,开始重点关注下AbstractBeanFactory与AbstractAutowireCapableBeanFactory即可。