spring中的BeanFactory源码详解

public interface BeanFactory {
    String FACTORY_BEAN_PREFIX = "&";

    Object getBean(String var1) throws BeansException;

    <T> T getBean(String var1, Class<T> var2) throws BeansException;

    <T> T getBean(Class<T> var1) throws BeansException;

    Object getBean(String var1, Object... var2) throws BeansException;

    <T> T getBean(Class<T> var1, Object... var2) throws BeansException;

    boolean containsBean(String var1);

    boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;

    boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;

    Class<?> getType(String var1) throws NoSuchBeanDefinitionException;

    String[] getAliases(String var1);
}

BeanFactory是最原始也是最重要的IOC容器,他主要为DI(依赖注入)提供支持。我们的BeanFactory接口,定义了一系列的接口方法,可以使不同的Bean检索方法方便的从IOC容器获取bean。所以这些方法为最基本的容器入口。

废话不多说,分析源码:

String FACTORY_BEAN_PREFIX = "&";

在此我们需要区分一个概念,bean与FactoryBean是不一样的,FactoryBean不是简单的bean,是一个能生产或修饰对象生成的工厂的bean,他的实现与设计模式中的工厂模式与修饰器模式类似。当我们直接通过FactoryBean的ID从BeanFactory中获取的对象实际上是由FactoryBean的getObject()返回的对象,而不是FactoryBean本身,如果想获得此FactoryBean对象,就请在ID前加一个&符号来获取。此转义字符“&”用来引用实例,或者把他与工厂产生的bean分开。

    Object getBean(String var1) throws BeansException;

    <T> T getBean(String var1, Class<T> var2) throws BeansException;

    <T> T getBean(Class<T> var1) throws BeansException;

    Object getBean(String var1, Object... var2) throws BeansException;

    <T> T getBean(Class<T> var1, Object... var2) throws BeansException;

此为五种不同形式获取bean实例的方法。

boolean containsBean(String var1);

帮助开发人员判断IOC容器中是否包含有指定名字的bean。

    boolean isSingleton(String var1) throws NoSuchBeanDefinitionException;

    boolean isPrototype(String var1) throws NoSuchBeanDefinitionException;

查询指定名字的bean是否为Singleton、Prototype类型的,这两种类型可以在BeanDefinition设定。

    boolean isTypeMatch(String var1, ResolvableType var2) throws NoSuchBeanDefinitionException;

    boolean isTypeMatch(String var1, Class<?> var2) throws NoSuchBeanDefinitionException;

查询指定名字的bean的class类型是否是特定的Class类型。

    Class<?> getType(String var1) throws NoSuchBeanDefinitionException;

查询知道bean的Class类型。

    String[] getAliases(String var1);

查询指定bean的所有别名,都在BeanDefinition设定的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值