将BeanFactory的源码复制出来,删除注释。
BeanFactory工厂的顶级接口,定义一系列对bean的操作。看方法
{
public interface BeanFactory {
//工厂的标识
String FACTORY_BEAN_PREFIX = "&"; //通过name获取bean Object getBean(String name) throws BeansException; //名字和类型获取bean <T> T getBean(String name, @Nullable Class<T> requiredType) throws BeansException; //名字和对应的构造器 Object getBean(String name, Object... args) throws BeansException; //通过类型去获取bean,如果有多个该类型的bean,无法解决那么抛出异常。 <T> T getBean(Class<T> requiredType) throws BeansException; //类型和构造函数,这个方法传入args是构造函数的参数,会根据传入的参数选取对应的构造函数 <T> T getBean(Class<T> requiredType, Object... args) throws BeansException; //判断容器中是否包含bean boolean containsBean(String name); boolean isSingleton(String name) throws NoSuchBeanDefinitionException; boolean isPrototype(String name) throws NoSuchBeanDefinitionException; boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException; boolean isTypeMatch(String name, @Nullable Class<?> typeToMatch) throws NoSuchBeanDefinitionException; @Nullable Class<?> getType(String name) throws NoSuchBeanDefinitionException; String[] getAliases(String name);
}
}
4个getBean方法、containBean方法、isSingleton方法、isPrototype方法、2个isTypeMatch方法、getType、getAliases。
FACTORY_BEAN_PREFIX
bean工厂的前缀,在获取bean的时候带上&表示获取bean的bean工厂。
4个getBean方法
不同的获取bean的策略,用于不同的场景。容器中没有bean定义和bean还没有被创建都会抛出异常
containsBean
包含
isSingleton
是否是单例
isPrototype
是否是原型
2个isTypeMatch
是不是匹配的类型,一个指定了类型,一个是泛型。
getType
获取bean的class类型
getAliases
获取bean的所有的别名