顶级接口BeanFactory源码解析

BeanFactory源码解析

Spring版本:4.X

public interface BeanFactory {

    /**这里主要用与区分是获取FactoryBean,
    *还是获取FactoryBean创建的bean。
    *如果有&,获取的是FactoryBean;
    *如果没&,获取的是FactoryBean创建的bean
    */
    String FACTORY_BEAN_PREFIX = "&";

    //五种不同的getBean(..)方法
    Object getBean(String name) throws BeansException;

     T getBean(String name, Class requiredType) throws BeansException;

     T getBean(Class requiredType) throws BeansException;

    Object getBean(String name, Object... args) throws BeansException;

     T getBean(Class requiredType, Object... args) throws BeansException;


    /**是否包含某个Bean
    *陷阱:这里的bean,不管类是不是抽象类,
    *是不是在容器中,是不是懒加载,只要符合,都会返回true;
    *所以,如果返回true,也不一定能用getBean()方法获取实例。
    */
    boolean containsBean(String name);

    //某个Bean是不是单例
    boolean isSingleton(String name) throws NoSuchBeanDefinitionException;

    //某个Bean是不是原型(多例)
    boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

    //两种不同的isTypeMatch(..)方法,来判断某个Bean的名称和类型是否匹配
    boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;

    
    boolean isTypeMatch(String name, Class typeToMatch) throws NoSuchBeanDefinitionException;

    //根据名称获取类型
    Class getType(String name) throws NoSuchBeanDefinitionException;

    //根据名称获取别名
    String[] getAliases(String name);

}

你可能感兴趣的:(顶级接口BeanFactory源码解析)