转载

spring-BeanFactory接口

将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的所有的别名

原文  https://segmentfault.com/a/1190000022529954
正文到此结束
Loading...